home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 / Aminet - June 1993 [Walnut Creek].iso / usenet / sources / volume91 / utilitys / bigbrthr / part01
Encoding:
Internet Message Format  |  1991-03-20  |  70.4 KB

  1. Path: news.larc.nasa.gov!amiga-request
  2. From: amiga-request@ab20.larc.nasa.gov (Amiga Sources/Binaries Moderator)
  3. Subject: v91i066: Bigbrother 2.11 - virus infection detector and more, Part01/01
  4. Reply-To: E. van Breemen <breemen@rulcvx.uucp>
  5. Newsgroups: comp.sources.amiga
  6. Message-ID: <comp.sources.amiga:v91i066@ab20.larc.nasa.gov>
  7. Date: 20 Mar 91 14:22:26 GMT
  8. Approved: tadguy@uunet.UU.NET (Tad Guy)
  9. X-Mail-Submissions-To: amiga@uunet.uu.net
  10. X-Post-Discussions-To: comp.sys.amiga.misc
  11.  
  12. Submitted-by: E. van Breemen <breemen@rulcvx.uucp>
  13. Posting-number: Volume 91, Issue 066
  14. Archive-name: utilities/bigbrother2.11/part01
  15.  
  16. [ includes uuencoded executable  ...tad ]
  17.  
  18. Bigbrother is a virus infection detection program with some optional
  19. utilities. It is running as a normal task and checks every 1 second
  20. the important memory locations in the Amiga. Depending on the values
  21. and the their combinations, an expert system will accept it or warn
  22. you in case it thinks it is dangerous. This means that no program
  23. can start a virus in memory without alerting Bigbrother. 
  24. As a bonus, Bigbrother is capable of starting a new shell, starting
  25. script files, viewing and installing bootblocks. All this in a 
  26. program less than 10K. 
  27.  
  28. #!/bin/sh
  29. # This is a shell archive.  Remove anything before this line, then unpack
  30. # it by saving it into a file and typing "sh file".  To overwrite existing
  31. # files, type "sh file -c".  You can also feed this as standard input via
  32. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  33. # will see the following message at the end:
  34. #        "End of archive 1 (of 1)."
  35. # Contents:  F2 F3 bigbrother.asm bigbrother.doc bigbrother.uu bighelp
  36. #   readme
  37. # Wrapped by tadguy@ab20 on Wed Mar 20 09:22:24 1991
  38. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  39. if test -f 'F2' -a "${1}" != "-c" ; then 
  40.   echo shar: Will not clobber existing file \"'F2'\"
  41. else
  42. echo shar: Extracting \"'F2'\" \(6 characters\)
  43. sed "s/^X//" >'F2' <<'END_OF_FILE'
  44. Xxoper
  45. END_OF_FILE
  46. if test 6 -ne `wc -c <'F2'`; then
  47.     echo shar: \"'F2'\" unpacked with wrong size!
  48. fi
  49. # end of 'F2'
  50. fi
  51. if test -f 'F3' -a "${1}" != "-c" ; then 
  52.   echo shar: Will not clobber existing file \"'F3'\"
  53. else
  54. echo shar: Extracting \"'F3'\" \(5 characters\)
  55. sed "s/^X//" >'F3' <<'END_OF_FILE'
  56. Xvex
  57. X
  58. END_OF_FILE
  59. if test 5 -ne `wc -c <'F3'`; then
  60.     echo shar: \"'F3'\" unpacked with wrong size!
  61. fi
  62. # end of 'F3'
  63. fi
  64. if test -f 'bigbrother.asm' -a "${1}" != "-c" ; then 
  65.   echo shar: Will not clobber existing file \"'bigbrother.asm'\"
  66. else
  67. echo shar: Extracting \"'bigbrother.asm'\" \(42429 characters\)
  68. sed "s/^X//" >'bigbrother.asm' <<'END_OF_FILE'
  69. X;====================================================================
  70. X;= Big Brother V2.11 by The Orega Programming Group Holland (c)1989 =
  71. X;= Programmer: EA van Breemen                        =
  72. X;= Assembler : DevPac 2.14                                          =
  73. X;====================================================================
  74. X    
  75. X;====================================================================
  76. X;= Modifications:                            =
  77. X;= 24-1-90:   fixed ctrl-Help bug                    =
  78. X;=            added newcli                        =
  79. X;=            optimized coding                        =
  80. X;= 26-1-90:   added newcli gadget                    =
  81. X;=            modified tekstborder                    =
  82. X;=            fixed 'system has been modified' tekst bug        =
  83. X;= 27-1-90:   fixed AlertWarning                    =
  84. X;=            adjusted some windowsizes                    =
  85. X;=            intuified viewbootblocktekst                =
  86. X;=            regulated bootio errors                    =
  87. X;=            added help                        =
  88. X;=            added preferences                        =
  89. X;= 21-10-90   fixed the memory clean message update bug             =
  90. X;=            added script options                                  = 
  91. X;= 23-10-90   make auto detaching                    =
  92. X;= 24-10-90   fixed another clean message box bug            =
  93. X;=          added ReBoot routine                    =   
  94. X;= 25-10-90   BigBrother is now using the official reboot           =
  95. X;= 27-10-90   Fixed the endcli bug                    =
  96. X;= 01-12-90   Fixed multiple selection bug. BB replies to all       =
  97. X;=            messages first before next Wait                =
  98. X;=            Version 2.11 Final release.                           = 
  99. X;====================================================================
  100. X
  101. X    
  102. XXLIB    macro
  103. X    xref    _LVO\1
  104. X    endm
  105. X
  106. X
  107. XMEMORY        equ    $1
  108. XVIEW        equ    $2
  109. XCLEAR        equ    $3
  110. XINSTALL        equ    $4
  111. XDRIVE        equ    $5
  112. XWATCH        equ    $6
  113. XNEWSHELL    equ    $7
  114. XHELP        equ    $8
  115. XREBOOT        equ    $9
  116. X
  117. X
  118. XREAD        equ    $2
  119. XWRITE        equ    $3
  120. X
  121. X
  122. XIECLASS_RAWKEY        equ    $01
  123. XIEQUALIFIER_CONTROL     equ    $08
  124. X
  125. XHELP_KEY        equ    $5f
  126. XFUNC_F1            equ    $50
  127. XFUNC_F2            equ    $51
  128. XFUNC_F3            equ    $52
  129. XFUNC_F4            equ    $53
  130. XFUNC_F5            equ    $54
  131. XFUNC_F6            equ    $55
  132. XFUNC_F7            equ    $56
  133. XFUNC_F8            equ    $57
  134. XFUNC_F9            equ    $58
  135. XFUNC_F10        equ    $59
  136. X
  137. X
  138. X
  139. XIND_ADDHANDLER        equ    $09
  140. XNT_MESSAGE        equ    $05
  141. XNT_MSGPORT        equ    $04
  142. XPA_SIGNAL        equ    $00
  143. Xio_Message        equ    $00
  144. Xio_Data            equ    $28
  145. Xio_Command        equ    $1c
  146. XLn_Type            equ    $08
  147. XLn_Name            equ    $0a
  148. XLn_Pri            equ    $09
  149. Xmp_Node            equ    $00
  150. Xmp_SigBit        equ    $0f
  151. Xmp_Flags        equ    $0e
  152. Xmp_SigTask        equ    $10
  153. Xmn_Node            equ    $00
  154. Xmn_Length        equ    $12
  155. Xmn_ReplyPort        equ    $0e
  156. X
  157. Xgg_GadgetID        equ    $26
  158. X
  159. Xim_Class        equ    $14
  160. Xim_Code            equ    $18
  161. Xim_Address        equ    $1c
  162. X
  163. Xwd_UserPort        equ    $56
  164. Xwd_RPort        equ    $32
  165. X
  166. XWindowPtr        equ    $b8
  167. X
  168. Xis_Code            equ    $12
  169. Xis_Data            equ    $0e
  170. Xis_Node            equ    $00
  171. X
  172. XGADGETUP        equ    $40
  173. XGADGHNONE        equ    $03
  174. XCLOSEWINDOW        equ    $200
  175. XWINDOWDRAG        equ    $02
  176. XWINDOWDEPTH        equ    $04
  177. XWINDOWCLOSE        equ    $08
  178. XACTIVATE        equ    $1000
  179. XNOCAREREFRESH        equ    $20000
  180. XWBENCHSCREEN        equ    $01
  181. XRELVERIFY        equ    $01
  182. XBOOLGADGET        equ    $01
  183. XRP_JAM1            equ    $00
  184. XRP_JAM2            equ    $01
  185. X
  186. XTD_CHANGESTATE        equ    14
  187. X
  188. XNULL            equ    $00
  189. X
  190. XMAGIC_ROMEND        EQU $01000000   ;End of Kickstart ROM
  191. XMAGIC_SIZEOFFSET    EQU -$14        ;Offset from end of ROM to Kickstart size
  192. XV36_EXEC        EQU 36        ;Exec with the ColdReboot() function
  193. XTEMP_ColdReboot     EQU -726        ;Offset of the V36 ColdReboot function
  194. XLIB_VERSION    EQU    $14
  195. X
  196. X
  197. X    XLIB    OpenLibrary
  198. X    XLIB    CloseLibrary
  199. X    XLIB    OpenDevice
  200. X    XLIB    CloseDevice
  201. X    XLIB    OpenWindow
  202. X    XLIB    CloseWindow
  203. X    XLIB    DoIO
  204. X    XLIB    Delay
  205. X    XLIB    GetMsg
  206. X    XLIB    ReplyMsg
  207. X    XLIB    AllocSignal
  208. X    XLIB    FreeSignal
  209. X    XLIB    FindTask
  210. X    XLIB    AddPort
  211. X    XLIB    RemPort
  212. X    XLIB    FindName
  213. X    XLIB    DeviceProc
  214. X    XLIB    RefreshGadgets
  215. X    XLIB    Wait
  216. X    XLIB    Move
  217. X    XLIB    Text
  218. X    XLIB    SetAPen
  219. X    XLIB    AllocMem
  220. X    XLIB    FreeMem
  221. X    XLIB    SetWindowTitles
  222. X    XLIB    FindResident
  223. X    XLIB    RemTask
  224. X    XLIB    DisplayBeep
  225. X    XLIB    Disable
  226. X    XLIB    Enable
  227. X    XLIB    DrawBorder
  228. X    XLIB    PrintIText
  229. X    XLIB    WBenchToFront
  230. X    XLIB    DisplayAlert
  231. X    XLIB    SizeWindow
  232. X    XLIB    WaitPort
  233. X    XLIB    Open
  234. X    XLIB    Close
  235. X    XLIB    Read
  236. X    XLIB    Lock
  237. X    XLIB    UnLock
  238. X    XLIB    Execute
  239. X    XLIB    CreateProc
  240. X    XLIB    WaitPort
  241. X    XLIB    Supervisor    
  242. X    XLIB    Write
  243. X    XLIB    Output
  244. X
  245. X_ASyncRun    equ    -$222
  246. XSTACK_SIZE    equ    4096
  247. X
  248. X
  249. X
  250. X;===================================
  251. X;= Startup code for auto detaching =
  252. X;= BigBrother V2.11                =
  253. X;===================================
  254. X
  255. X    
  256. X    section    "Startup",code
  257. X
  258. Xstart    move.l    $4,a6
  259. X    sub.l    a1,a1
  260. X    jsr    _LVOFindTask(a6)
  261. X    move.l    d0,a4
  262. X    tst.l    $ac(a4)            ; Are we from the WBench ????
  263. X    bne.s    from_cli
  264. X    lea.l    $5c(a4),a0
  265. X    jsr    _LVOWaitPort(a6)
  266. X    jsr    _LVOGetMsg(a6)        ; Get message
  267. Xfrom_cli:
  268. X    move.l    $4,a6
  269. X    lea.l    DosName,a1
  270. X    clr.l    d0
  271. X    jsr    _LVOOpenLibrary(a6)
  272. X    move.l    d0,a5
  273. X    beq    uit
  274. X    move.l    a5,a6
  275. X    jsr    _LVOOutput(a6)
  276. X    move.l    d0,d1
  277. X    move.l    #Title,d2
  278. X    move.l    #80,d3
  279. X    jsr    _LVOWrite(a6)
  280. X    move.l    #NIL_NAME,d1
  281. X    move.l    #1006,d2
  282. X    jsr    _LVOOpen(a6)
  283. X    move.l    d0,pcb_Input
  284. X    move.l    d0,pcb_Output
  285. X    
  286. X
  287. X    move.l    $4,a6
  288. X    lea.l    ArpName,a1
  289. X    clr.l    d0
  290. X    jsr    _LVOOpenLibrary(a6)
  291. X    move.l    d0,ArpBase
  292. X    bne    1$
  293. X    bra    2$
  294. X1$    move.l    ArpBase,a6
  295. X    move.l    #0,a0
  296. X    move.l    #0,a1
  297. X    lea.l    newshell2,a2
  298. X    jsr    _ASyncRun(a6)
  299. X    move.l    $4,a6
  300. X    move.l    ArpBase,a1
  301. X    jsr    _LVOCloseLibrary(a6)    ; Close Arp
  302. X
  303. X    lea.l    start,a0
  304. X    move.l    #0,-4(a0)        ; Erase pointer to next segment
  305. X    
  306. X2$    move.l    $4,a6
  307. X    move.l    a5,a1
  308. X    jsr    _LVOCloseLibrary(a6)
  309. X
  310. Xuit    rts
  311. X
  312. X
  313. X
  314. X    data
  315. X
  316. XTitle    dc.b    'BigBrother V2.11 ',169,'1990 by EA van Breemen',10,13
  317. X    dc.b    'The Orega Programming Group Holland.',10,13,0
  318. X    
  319. X    even
  320. X
  321. XNewWindowStructure1:
  322. X    dc.w    62,30
  323. X    dc.w    330,126
  324. X    dc.b    0,1
  325. X    dc.l    GADGETUP+CLOSEWINDOW
  326. X    dc.l    WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE+NOCAREREFRESH
  327. X    dc.l    Gadget1
  328. X    dc.l    NULL
  329. X    dc.l    CopyrightName
  330. X    dc.l    NULL
  331. X    dc.l    NULL
  332. X    dc.w    5,5
  333. X    dc.w    -1,-1
  334. X    dc.w    WBENCHSCREEN
  335. XNewWindowStructure2:
  336. X    dc.w    0,0
  337. Xhsize    dc.w    550,150
  338. X    dc.b    0,1
  339. X    dc.l    CLOSEWINDOW
  340. X    dc.l    ACTIVATE+NOCAREREFRESH+WINDOWCLOSE
  341. X    dc.l    NULL
  342. X    dc.l    NULL
  343. Xtitle2    dc.l    InitTitle
  344. X    dc.l    NULL
  345. X    dc.l    NULL
  346. X    dc.w    5,5
  347. X    dc.w    -1,-1
  348. X    dc.w    WBENCHSCREEN
  349. XCopyrightName:
  350. X    dc.b 'Big Brother V2.11',0
  351. X    dc.b    ' ',169,'1989/1990',0
  352. X    cnop 0,2
  353. XInitTitle:
  354. X    dc.b    'BootBlock:',0
  355. X    even
  356. XViewTitle:
  357. X    dc.b    'Contents of ExecBase:',0
  358. X    even
  359. XInstallTitle:
  360. X    dc.b    'Installing BootBlock',0
  361. X    even
  362. XHelpTitle:
  363. X    dc.b    'Help',0
  364. X    even
  365. Xinstall_message:
  366. X    dc.b    'Disk has been installed',0
  367. X    even
  368. Xinstall_fail:
  369. X    dc.b    'Install has failed',0
  370. X    even
  371. Xdisk_protected:
  372. X    dc.b    'Disk is write-protected!',0
  373. X    even
  374. Xdisk_changed:
  375. X    dc.b    'Disk has been removed!',0
  376. X    even
  377. XStandardBootBlock:
  378. X    dc.b    'Standard BootBlock by The Orega Programming Group Holland.'
  379. X    dc.b    ' Copyright 1989,1990. Installed by Big Brother V2.11'
  380. XStandardend:
  381. X    even
  382. Xprefs_file:
  383. X    dc.b    's:big_prefs',0
  384. X    even
  385. XGadget1:
  386. X    dc.l    Gadget2
  387. X    dc.w    29,22
  388. X    dc.w    80,15
  389. X    dc.w    GADGHNONE
  390. X    dc.w    RELVERIFY
  391. X    dc.w    BOOLGADGET
  392. X    dc.l    Border1
  393. X    dc.l    NULL
  394. X    dc.l    IText1
  395. X    dc.l    NULL
  396. X    dc.l    NULL
  397. X    dc.w    DRIVE
  398. X    dc.l    NULL
  399. XBorder1:
  400. X    dc.w    0,0
  401. X    dc.b    2,0,RP_JAM2
  402. X    dc.b    5
  403. X    dc.l    BorderVectors1
  404. X    dc.l    Border1a
  405. XBorder1a:
  406. X    dc.w    -1,-1
  407. X    dc.b    1,0,RP_JAM1
  408. X    dc.b    5
  409. X    dc.l    BorderVectors1
  410. X    dc.l    NULL
  411. XBorderVectors1:
  412. X    dc.w    0,0
  413. X    dc.w    80,0
  414. X    dc.w    80,15
  415. X    dc.w    0,15
  416. X    dc.w    0,0
  417. X
  418. X;======== Custom Drawing =======================
  419. X
  420. XBorder2:
  421. X    dc.w    30,96
  422. X    dc.b    2,0,RP_JAM2
  423. X    dc.b    5
  424. X    dc.l    BorderVectors2
  425. X    dc.l    Border3
  426. XBorder3:
  427. X    dc.w    28,95
  428. X    dc.b    1,0,RP_JAM1
  429. X    dc.b    5
  430. X    dc.l    BorderVectors2
  431. X    dc.l    NULL
  432. XBorderVectors2:            ; Tekstbox of mainwindow
  433. X    dc.w    0,0
  434. X    dc.w    283,0
  435. X    dc.w    283,26
  436. X    dc.w    0,26
  437. X    dc.w    0,0
  438. XMyTekst:
  439. X    dc.b    2,0,RP_JAM2,0
  440. X    dc.w    45,110
  441. X    dc.l    NULL
  442. XMt1    dc.l    NULL
  443. X    dc.l    MyTekst2
  444. XMyTekst2:
  445. X    dc.b    1,0,RP_JAM1,0
  446. X    dc.w    44,109
  447. X    dc.l    NULL
  448. XMt2    dc.l    NULL
  449. X    dc.l    NULL
  450. XMyTekst3:
  451. X    dc.b    2,0,RP_JAM2,0
  452. X    dc.w    45,100
  453. X    dc.l    NULL
  454. XMt3    dc.l    NULL
  455. X    dc.l    MyTekst4
  456. XMyTekst4:
  457. X    dc.b    1,0,RP_JAM1,0
  458. X    dc.w    44,99
  459. X    dc.l    NULL
  460. XMt4    dc.l    NULL
  461. X    dc.l    NULL
  462. X
  463. X
  464. X;=====================================================
  465. X;= IntuiText structures for clearing the message box =
  466. X;=====================================================
  467. X
  468. XMyTekst3a:
  469. X    dc.b    2,0,RP_JAM2,0
  470. X    dc.w    45,100
  471. X    dc.l    NULL
  472. X    dc.l    L10
  473. X    dc.l    MyTekst4a
  474. XMyTekst4a:
  475. X    dc.b    1,0,RP_JAM2,0
  476. X    dc.w    44,99
  477. X    dc.l    NULL
  478. X    dc.l    L10
  479. X    dc.l    MyTekst3b
  480. XMyTekst3b:
  481. X    dc.b    2,0,RP_JAM2,0
  482. X    dc.w    45,110
  483. X    dc.l    NULL
  484. X    dc.l    L10
  485. X    dc.l    MyTekst4b
  486. XMyTekst4b:
  487. X    dc.b    1,0,RP_JAM2,0
  488. X    dc.w    44,109
  489. X    dc.l    NULL
  490. X    dc.l    L10
  491. X    dc.l    NULL
  492. X
  493. X
  494. X
  495. XMyTekst5:
  496. X    dc.b    2,0,RP_JAM2,0
  497. X    dc.w    40,25
  498. X    dc.l    NULL
  499. XMt5    dc.l    NULL
  500. X    dc.l    MyTekst6
  501. XMyTekst6:
  502. X    dc.b    1,0,RP_JAM1,0
  503. X    dc.w    39,24
  504. X    dc.l    NULL
  505. XMt6    dc.l    NULL
  506. X    dc.l    NULL
  507. X
  508. X;=====================================
  509. X
  510. X
  511. XIText1:
  512. X    dc.b    2,0,RP_JAM2,0
  513. X    dc.w    21,3
  514. X    dc.l    NULL
  515. X    dc.l    DummyTekst
  516. X    dc.l    IText1a
  517. XIText1a:
  518. X    dc.b    2,0,RP_JAM2,0
  519. X    dc.w    22,4
  520. X    dc.l    NULL
  521. X    dc.l    ITextText1
  522. X    dc.l    IText1b
  523. XIText1b:
  524. X    dc.b    1,0,RP_JAM1,0
  525. X    dc.w    21,3
  526. X    dc.l    NULL
  527. X    dc.l    ITextText1
  528. X    dc.l    NULL
  529. X
  530. XITextText1:
  531. X    dc.b    'DF0:',0
  532. X    cnop 0,2
  533. XDummyTekst:
  534. X    dc.b    '    ',0
  535. X    cnop 0,2
  536. XGadget2:
  537. X    dc.l    Gadget3
  538. X    dc.w    128,46
  539. X    dc.w    80,15
  540. X    dc.w    NULL
  541. X    dc.w    RELVERIFY
  542. X    dc.w    BOOLGADGET
  543. X    dc.l    Border1
  544. X    dc.l    NULL
  545. X    dc.l    IText2
  546. X    dc.l    NULL
  547. X    dc.l    NULL
  548. X    dc.w    MEMORY
  549. X    dc.l    NULL
  550. XIText2:
  551. X    dc.b    2,0,RP_JAM2,0
  552. X    dc.w    15,4
  553. X    dc.l    NULL
  554. X    dc.l    ITextText2
  555. X    dc.l    IText2b
  556. XIText2b:
  557. X    dc.b    1,0,RP_JAM1,0
  558. X    dc.w    14,3
  559. X    dc.l    NULL
  560. X    dc.l    ITextText2
  561. X    dc.l    NULL
  562. XITextText2:
  563. X    dc.b    'Memory',0
  564. X    cnop 0,2
  565. XGadget3:
  566. X    dc.l    Gadget4
  567. X    dc.w    229,22
  568. X    dc.w    80,15
  569. X    dc.w    NULL
  570. X    dc.w    RELVERIFY
  571. X    dc.w    BOOLGADGET
  572. X    dc.l    Border1
  573. X    dc.l    NULL
  574. X    dc.l    IText3
  575. X    dc.l    NULL
  576. X    dc.l    NULL
  577. X    dc.w    INSTALL
  578. X    dc.l    NULL
  579. X
  580. XIText3:
  581. X    dc.b    2,0,RP_JAM2,0
  582. X    dc.w    13,4
  583. X    dc.l    NULL
  584. X    dc.l    ITextText3
  585. X    dc.l    IText3b
  586. XIText3b:
  587. X    dc.b    1,0,RP_JAM1,0
  588. X    dc.w    12,3
  589. X    dc.l    NULL
  590. X    dc.l    ITextText3
  591. X    dc.l    NULL
  592. XITextText3:
  593. X    dc.b    'Install',0
  594. X    cnop 0,2
  595. XGadget4:
  596. X    dc.l    Gadget5
  597. X    dc.w    29,46
  598. X    dc.w    80,15
  599. X    dc.w    NULL
  600. X    dc.w    RELVERIFY
  601. X    dc.w    BOOLGADGET
  602. X    dc.l    Border1
  603. X    dc.l    NULL
  604. X    dc.l    IText4
  605. X    dc.l    NULL
  606. X    dc.l    NULL
  607. X    dc.w    WATCH
  608. X    dc.l    NULL
  609. X
  610. XIText4:
  611. X    dc.b    2,0,RP_JAM2,0
  612. X    dc.w    22,4
  613. X    dc.l    NULL
  614. X    dc.l    ITextText4
  615. X    dc.l    IText4b
  616. XIText4b:
  617. X    dc.b    1,0,RP_JAM1,0
  618. X    dc.w    21,3
  619. X    dc.l    NULL
  620. X    dc.l    ITextText4
  621. X    dc.l    NULL
  622. XITextText4:
  623. X    dc.b    'Watch',0
  624. X    cnop 0,2
  625. XGadget5:
  626. X    dc.l    Gadget6
  627. X    dc.w    229,46
  628. X    dc.w    80,15
  629. X    dc.w    NULL
  630. X    dc.w    RELVERIFY
  631. X    dc.w    BOOLGADGET
  632. X    dc.l    Border1
  633. X    dc.l    NULL
  634. X    dc.l    IText5
  635. X    dc.l    NULL
  636. X    dc.l    NULL
  637. X    dc.w    CLEAR
  638. X    dc.l    NULL
  639. X
  640. XIText5:
  641. X    dc.b    2,0,RP_JAM2,0
  642. X    dc.w    22,4
  643. X    dc.l    NULL
  644. X    dc.l    ITextText5
  645. X    dc.l    IText5b
  646. XIText5b:
  647. X    dc.b    1,0,RP_JAM1,0
  648. X    dc.w    21,3
  649. X    dc.l    NULL
  650. X    dc.l    ITextText5
  651. X    dc.l    NULL
  652. XITextText5:
  653. X    dc.b    'Clear',0
  654. X    cnop 0,2
  655. XGadget6:
  656. X    dc.l    Gadget7
  657. X    dc.w    128,22
  658. X    dc.w    80,15
  659. X    dc.w    NULL
  660. X    dc.w    RELVERIFY
  661. X    dc.w    BOOLGADGET
  662. X    dc.l    Border1
  663. X    dc.l    NULL
  664. X    dc.l    IText6
  665. X    dc.l    NULL
  666. X    dc.l    NULL
  667. X    dc.w    VIEW
  668. X    dc.l    NULL
  669. X
  670. XIText6:
  671. X    dc.b    2,0,RP_JAM2,0
  672. X    dc.w    22,4
  673. X    dc.l    NULL
  674. X    dc.l    ITextText6
  675. X    dc.l    IText6b
  676. XIText6b:
  677. X    dc.b    1,0,RP_JAM1,0
  678. X    dc.w    21,3
  679. X    dc.l    NULL
  680. X    dc.l    ITextText6
  681. X    dc.l    NULL
  682. XITextText6:
  683. X    dc.b    'View',0
  684. X    even
  685. X    
  686. XGadget7:
  687. X    dc.l    Gadget8
  688. X    dc.w    29,70
  689. X    dc.w    80,15
  690. X    dc.w    NULL
  691. X    dc.w    RELVERIFY
  692. X    dc.w    BOOLGADGET
  693. X    dc.l    Border1
  694. X    dc.l    NULL
  695. X    dc.l    IText7
  696. X    dc.l    NULL
  697. X    dc.l    NULL
  698. X    dc.w    NEWSHELL
  699. X    dc.l    NULL
  700. XIText7:
  701. X    dc.b    2,0,RP_JAM2,0
  702. X    dc.w    10,4
  703. X    dc.l    NULL
  704. X    dc.l    ITextText7
  705. X    dc.l    IText7b
  706. XIText7b:
  707. X    dc.b    1,0,RP_JAM1,0
  708. X    dc.w    9,3
  709. X    dc.l    NULL
  710. X    dc.l    ITextText7
  711. X    dc.l    NULL
  712. XITextText7:
  713. X    dc.b    'NewShell',0
  714. X    
  715. X    even
  716. XGadget8:
  717. X    dc.l    Gadget9
  718. X    dc.w    229,70
  719. X    dc.w    80,15
  720. X    dc.w    NULL
  721. X    dc.w    RELVERIFY
  722. X    dc.w    BOOLGADGET
  723. X    dc.l    Border1
  724. X    dc.l    NULL
  725. X    dc.l    _IText8
  726. X    dc.l    NULL
  727. X    dc.l    NULL
  728. X    dc.w    HELP
  729. X    dc.l    NULL
  730. X_IText8:
  731. X    dc.b    2,0,RP_JAM2,0
  732. X    dc.w    23,4
  733. X    dc.l    NULL
  734. X    dc.l    _ITextText8
  735. X    dc.l    _IText8b
  736. X_IText8b:
  737. X    dc.b    1,0,RP_JAM1,0
  738. X    dc.w    22,3
  739. X    dc.l    NULL
  740. X    dc.l    _ITextText8
  741. X    dc.l    NULL
  742. X_ITextText8:
  743. X    dc.b    'Help',0
  744. X    
  745. X    even
  746. X
  747. XGadget9:
  748. X    dc.l    NULL
  749. X    dc.w    128,70
  750. X    dc.w    80,15
  751. X    dc.w    NULL
  752. X    dc.w    RELVERIFY
  753. X    dc.w    BOOLGADGET
  754. X    dc.l    Border1
  755. X    dc.l    NULL
  756. X    dc.l    _IT9
  757. X    dc.l    NULL
  758. X    dc.l    NULL
  759. X    dc.w    REBOOT
  760. X    dc.l    NULL
  761. X_IT9:
  762. X    dc.b    2,0,RP_JAM2,0
  763. X    dc.w    15,4
  764. X    dc.l    NULL
  765. X    dc.l    _ITT9
  766. X    dc.l    _IT9b
  767. X_IT9b:
  768. X    dc.b    1,0,RP_JAM1,0
  769. X    dc.w    14,3
  770. X    dc.l    NULL
  771. X    dc.l    _ITT9
  772. X    dc.l    NULL
  773. X_ITT9:
  774. X    dc.b    'ReBoot',0
  775. X    
  776. X    even
  777. X
  778. X
  779. X;======== Tekst structures for viewmemory ============
  780. X
  781. XIText8:
  782. X    dc.b    2,0,RP_JAM2,0
  783. X    dc.w    11,26
  784. X    dc.l    NULL
  785. XMTE8    dc.l    NULL
  786. X    dc.l    IText8b
  787. XIText8b:
  788. X    dc.b    1,0,RP_JAM1,0
  789. X    dc.w    10,25
  790. X    dc.l    NULL
  791. XMTE8b    dc.l    NULL
  792. X    dc.l    IText9
  793. X
  794. XIText9:
  795. X    dc.b    2,0,RP_JAM2,0
  796. X    dc.w    11,36
  797. X    dc.l    NULL
  798. XMTE9    dc.l    NULL
  799. X    dc.l    IText9b
  800. XIText9b:
  801. X    dc.b    1,0,RP_JAM1,0
  802. X    dc.w    10,35
  803. X    dc.l    NULL
  804. XMTE9b    dc.l    NULL
  805. X    dc.l    IText10
  806. X
  807. XIText10:
  808. X    dc.b    2,0,RP_JAM2,0
  809. X    dc.w    11,46
  810. X    dc.l    NULL
  811. XMTE10    dc.l    NULL
  812. X    dc.l    IText10b
  813. XIText10b:
  814. X    dc.b    1,0,RP_JAM1,0
  815. X    dc.w    10,45
  816. X    dc.l    NULL
  817. XMTE10b    dc.l    NULL
  818. X    dc.l    IText11
  819. X
  820. XIText11:
  821. X    dc.b    2,0,RP_JAM2,0
  822. X    dc.w    11,56
  823. X    dc.l    NULL
  824. XMTE11    dc.l    NULL
  825. X    dc.l    IText11b
  826. XIText11b:
  827. X    dc.b    1,0,RP_JAM1,0
  828. X    dc.w    10,55
  829. X    dc.l    NULL
  830. XMTE11b    dc.l    NULL
  831. X    dc.l    IText12
  832. X
  833. XIText12:
  834. X    dc.b    2,0,RP_JAM2,0
  835. X    dc.w    11,66
  836. X    dc.l    NULL
  837. XMTE12    dc.l    NULL
  838. X    dc.l    IText12b
  839. XIText12b:
  840. X    dc.b    1,0,RP_JAM1,0
  841. X    dc.w    10,65
  842. X    dc.l    NULL
  843. XMTE12b    dc.l    NULL
  844. X    dc.l    IText13
  845. X
  846. XIText13:
  847. X    dc.b    2,0,RP_JAM2,0
  848. X    dc.w    11,81
  849. X    dc.l    NULL
  850. XMTE13    dc.l    NULL
  851. X    dc.l    IText13b
  852. XIText13b:
  853. X    dc.b    1,0,RP_JAM1,0
  854. X    dc.w    10,80
  855. X    dc.l    NULL
  856. XMTE13b    dc.l    NULL
  857. X    dc.l    NULL
  858. XIText14:
  859. X    dc.b    2,0,RP_JAM2,0
  860. X    dc.w    10
  861. Xy1    dc.w    0
  862. X    dc.l    NULL
  863. XMTE14    dc.l    dummy
  864. X    dc.l    IText14b
  865. XIText14b:
  866. X    dc.b    1,0,RP_JAM1,0
  867. X    dc.w    9
  868. Xy2    dc.w    0
  869. X    dc.l    NULL
  870. XMTE14b    dc.l    dummy
  871. X    dc.l    NULL
  872. X
  873. X;== Help strings =====================================
  874. X
  875. XText15:
  876. X    dc.b    2,0,RP_JAM2,0
  877. X    dc.w    11,21
  878. X    dc.l    NULL
  879. X    dc.l    T15
  880. X    dc.l    Text15b
  881. XText15b:
  882. X    dc.b    1,0,RP_JAM1,0
  883. X    dc.w    10,20
  884. X    dc.l    NULL
  885. X    dc.l    T15
  886. X    dc.l    Text16
  887. XT15    dc.b    'This program is programmed by EA van Breemen',0
  888. X    even
  889. XText16:
  890. X    dc.b    2,0,RP_JAM2,0
  891. X    dc.w    11,31
  892. X    dc.l    NULL
  893. X    dc.l    T16
  894. X    dc.l    Text16b
  895. XText16b:
  896. X    dc.b    1,0,RP_JAM1,0
  897. X    dc.w    10,30
  898. X    dc.l    NULL
  899. X    dc.l    T16
  900. X    dc.l    Text17
  901. XT16    dc.b    'Copyright by The Orega Programming Group Holland',0
  902. X    even
  903. XText17:
  904. X    dc.b    2,0,RP_JAM2,0
  905. X    dc.w    11,41
  906. X    dc.l    NULL
  907. X    dc.l    T17
  908. X    dc.l    Text17b
  909. XText17b:
  910. X    dc.b    1,0,RP_JAM1,0
  911. X    dc.w    10,40
  912. X    dc.l    NULL
  913. X    dc.l    T17
  914. X    dc.l    Text18
  915. XT17    dc.b    169,'1989,1990. Any commercially based reproducing',0
  916. X    even
  917. XText18:
  918. X    dc.b    2,0,RP_JAM2,0
  919. X    dc.w    11,51
  920. X    dc.l    NULL
  921. X    dc.l    T18
  922. X    dc.l    Text18b
  923. XText18b:
  924. X    dc.b    1,0,RP_JAM1,0
  925. X    dc.w    10,50
  926. X    dc.l    NULL
  927. X    dc.l    T18
  928. X    dc.l    Text19
  929. XT18    dc.b    'by any means of this shareware product is illegal.',0
  930. X    even
  931. XText19:
  932. X    dc.b    2,0,RP_JAM2,0
  933. X    dc.w    11,61
  934. X    dc.l    NULL
  935. X    dc.l    T19
  936. X    dc.l    Text19b
  937. XText19b:
  938. X    dc.b    1,0,RP_JAM1,0
  939. X    dc.w    10,60
  940. X    dc.l    NULL
  941. X    dc.l    T19
  942. X    dc.l    Text20
  943. XT19    dc.b    'If you find this program usefull please send $10',0
  944. X    even
  945. XText20:
  946. X    dc.b    2,0,RP_JAM2,0
  947. X    dc.w    11,71
  948. X    dc.l    NULL
  949. X    dc.l    T20
  950. X    dc.l    Text20b
  951. XText20b:
  952. X    dc.b    1,0,RP_JAM1,0
  953. X    dc.w    10,70
  954. X    dc.l    NULL
  955. X    dc.l    T20
  956. X    dc.l    Text21
  957. XT20    dc.b    'to: EA van Breemen, Berliozplein 15, 2651 VG',0
  958. X    even
  959. XText21:
  960. X    dc.b    2,0,RP_JAM2,0
  961. X    dc.w    11,81
  962. X    dc.l    NULL
  963. X    dc.l    T21
  964. X    dc.l    Text21b
  965. XText21b:
  966. X    dc.b    1,0,RP_JAM1,0
  967. X    dc.w    10,80
  968. X    dc.l    NULL
  969. X    dc.l    T21
  970. X    dc.l    Text22
  971. XT21    dc.b    'Berkel en Rodenrijs,  Holland.',0
  972. X    even
  973. XText22:
  974. X    dc.b    2,0,RP_JAM2,0
  975. X    dc.w    11,101
  976. X    dc.l    NULL
  977. X    dc.l    T22
  978. X    dc.l    Text22b
  979. XText22b:
  980. X    dc.b    1,0,RP_JAM1,0
  981. X    dc.w    10,100
  982. X    dc.l    NULL
  983. X    dc.l    T22
  984. X    dc.l    Text23
  985. XT22    dc.b    'Help:   Ctrl-F1   ..... NewShell',0
  986. X    even
  987. XText23:
  988. X    dc.b    2,0,RP_JAM2,0
  989. X    dc.w    11,111
  990. X    dc.l    NULL
  991. X    dc.l    T23
  992. X    dc.l    Text23b
  993. XText23b:
  994. X    dc.b    1,0,RP_JAM1,0
  995. X    dc.w    10,110
  996. X    dc.l    NULL
  997. X    dc.l    T23
  998. X    dc.l    NULL
  999. XT23    dc.b    '        Ctrl-HELP ..... BigBrother',0
  1000. X    even
  1001. X
  1002. X
  1003. X;=====================================================
  1004. X
  1005. Xexpert    dc.b    0,1,2,2,3,4,5,6,3,4,7
  1006. X    dc.b       7,3,4,7,7,8,8,0,1,8,8
  1007. X    dc.b    5,5,8,8,7,7,8,8,7,7
  1008. X
  1009. X    even
  1010. X
  1011. Xconvtable    dc.b    '0123456789abcdef',0
  1012. X    even
  1013. X
  1014. Xmessage    dc.b    'This system has been modified.',0
  1015. XL0    dc.b    'Memory is clean.',0
  1016. XL1    dc.b    'Sca virus.',0
  1017. XL2    dc.b    'Unknown virus or not mounted rad.',0
  1018. XL3    dc.b    'Non reset virus.',0
  1019. XL4    dc.b    'Sca like virus.',0
  1020. XL5    dc.b    'Dasa virus.',0
  1021. XL6    dc.b    'Dasa like virus.',0
  1022. XL7    dc.b    'ByteBandit or Lamer virus.',0
  1023. XL8    dc.b    'Unknown system configuration???',0
  1024. XL9    dc.b    'System has not been modified. ',0
  1025. XL10    dc.b    '                                 ',0
  1026. X
  1027. X    even
  1028. X
  1029. XTaskName    dc.b    'RAD',0
  1030. X    even
  1031. Xdevicename    dc.b    'trackdisk.device',0
  1032. X    even
  1033. XMyPortName    dc.b    'BigBrother Port',0
  1034. X    even
  1035. Xerrormessage    dc.b    'BootBlock Read/Write Error.',0
  1036. X    even
  1037. Xfound_rad    dc.b    'RadTask has been found.',0
  1038. X    even
  1039. Xno_found_rad    dc.b    'RadTask has not been found.',0
  1040. X    even
  1041. Xloginfo    dc.b     'Launched by BigBrother V2.11',10,0
  1042. X    even
  1043. XAlertstring    dc.w    170
  1044. X        dc.b    15
  1045. X        dc.b    '! ! ! ! !  W A R N I N G ! ! ! ! ! ',0
  1046. X        dc.b    1
  1047. X        dc.w    176
  1048. X        dc.b    27
  1049. X        dc.b    'Are you sure to clear the memory?',0
  1050. X        dc.b    1
  1051. X        dc.w    10
  1052. X        dc.b    39
  1053. X        dc.b    'Press <LEFT MOUSE BUTTON> for OK  ----  Press <RIGHT MOUSE BUTTON> for CANCEL',0
  1054. X        dc.b    0
  1055. X    even
  1056. XAlertstring2    dc.w    170
  1057. X        dc.b    15
  1058. X        dc.b    '! ! ! ! !  W A R N I N G ! ! ! ! ! ',0
  1059. X        dc.b    1
  1060. X        dc.w    176
  1061. X        dc.b    27
  1062. X        dc.b    'Are you sure you want to Reboot? ',0
  1063. X        dc.b    1
  1064. X        dc.w    10
  1065. X        dc.b    39
  1066. X        dc.b    'Press <LEFT MOUSE BUTTON> for OK  ----  Press <RIGHT MOUSE BUTTON> for CANCEL',0
  1067. X        dc.b    0
  1068. X    even
  1069. X
  1070. X;================
  1071. X;= Library data =
  1072. X;================
  1073. X
  1074. XDosName    dc.b    'dos.library',0
  1075. X    cnop 0,2
  1076. XIntuitionName     dc.b 'intuition.library',0
  1077. X    cnop 0,2
  1078. XGraphicsName     dc.b 'graphics.library',0
  1079. X    cnop 0,2
  1080. XArpName    dc.b    'arp.library',0
  1081. X    even
  1082. Xcoldcapture    dc.b    'ColdCapture - Offset   42 :$',0
  1083. Xcoolcapture    dc.b    'CoolCapture - Offset   46 :$',0
  1084. Xkickmemptr    dc.b    'KickMemPtr  - Offset  546 :$',0
  1085. Xkicktagptr    dc.b    'KickTagPtr  - Offset  550 :$',0
  1086. Xdoio_vector    dc.b    'DoIO Vector - Offset -454 :$',0
  1087. X
  1088. Xnumber        dc.b    '00000000',0
  1089. X    even
  1090. X
  1091. XBIG_NAME    dc.b    'BigBrother',0
  1092. X    even
  1093. XNIL_NAME    dc.b    'NIL:',0
  1094. X    even
  1095. X
  1096. Xscript2        dc.b    'Execute s:F2',0
  1097. Xscript3        dc.b    'Execute s:F3',0
  1098. Xscript4        dc.b    'Execute s:F4',0
  1099. Xscript5        dc.b    'Execute s:F5',0
  1100. Xscript6        dc.b    'Execute s:F6',0
  1101. Xscript7        dc.b    'Execute s:F7',0
  1102. Xscript8        dc.b    'Execute s:F8',0
  1103. Xscript9        dc.b    'Execute s:F9',0
  1104. Xscript10    dc.b    'Execute s:F10',0
  1105. X
  1106. X
  1107. X
  1108. X;=====================
  1109. X;= Input Device data =
  1110. X;=====================
  1111. X
  1112. XInputDeviceName    dc.b    'input.device',0
  1113. X    even
  1114. X
  1115. X
  1116. X
  1117. Xdf0    dc.l    'DF0:'
  1118. Xdf1    dc.l    'DF1:'
  1119. Xdf2    dc.l    'DF2:'
  1120. Xdf3    dc.l    'DF3:'
  1121. X
  1122. X    dc.b    '    DoIO vector:'
  1123. X    even
  1124. XDoIOVector    dc.l    $fc06dc        ; DoIO Vector for V1.2
  1125. X
  1126. X;=======================
  1127. X;= Arp data structures =
  1128. X;=======================
  1129. X
  1130. Xnewshell:                ; Process control structure for Arp
  1131. X    
  1132. Xnsh_StackSize    dc.l    4000    ; Stacksize for new process
  1133. Xnsh_Pri        dc.b    0     ; Priority of new process
  1134. Xnsh_Control    dc.b    128+8    ; Make a newshell
  1135. Xnsh_LogMsg    dc.l    loginfo
  1136. Xnsh_Input    dc.l    0    ; Optional default input
  1137. Xnsh_Output    dc.l    0    ; Optional default output
  1138. Xnsh_Reserved    ds.l    5    ; Extra
  1139. X
  1140. XCONNAME    dc.b    'CON:0/0/639/75/The Orega Programming Group Holland',0
  1141. X    even
  1142. X
  1143. Xnewshell2:                ; Process control structure for Arp
  1144. X    
  1145. Xpcb_StackSize    dc.l    4000    ; Stacksize for new process
  1146. Xpcb_Pri        dc.b    0     ; Priority of new process
  1147. Xpcb_Control    dc.b    16    ; Make a background cli
  1148. Xpcb_TrapCode    dc.l    0
  1149. Xpcb_Input    dc.l    0    ; Optional default input
  1150. Xpcb_Output    dc.l    0    ; Optional default output
  1151. Xpcb_Console    dc.l    CONNAME    ; Union
  1152. Xpcb_LoadedCode    dc.l    mymain
  1153. Xpcb_lastGasp    dc.l    0
  1154. Xpcb_WBProcess    dc.l    0
  1155. X
  1156. X    even
  1157. X    bss
  1158. X
  1159. XDOSBase            ds.l    1
  1160. XGfxBase            ds.l    1
  1161. XIntuitionBase        ds.l    1
  1162. XArpBase            ds.l    1
  1163. Xwindow            ds.l    1
  1164. Xwindow2            ds.l    1
  1165. Xrp            ds.l    1
  1166. Xrp2            ds.l    1
  1167. Xbuffer            ds.l    1
  1168. Xkeyfound        ds.w    1
  1169. Xcommando        ds.w    1
  1170. XMode            ds.b    1
  1171. Xsignal            ds.b    1
  1172. XFlag            ds.b    1
  1173. Xdrive            ds.b    1
  1174. Xio_error        ds.b    1
  1175. X    even
  1176. Xdiskio            ds.l    20
  1177. Xreadreply        ds.l    8
  1178. Xmemorymask        ds.l    1
  1179. Xfilehandle        ds.l    1
  1180. Xlock            ds.l    1
  1181. XInputRequestBlock    ds.b    $30
  1182. X    even
  1183. XInputDevPort        ds.b    $22
  1184. X    even
  1185. XHandlerStuff        ds.b    $16
  1186. X    even
  1187. Xdummy            ds.b    70
  1188. X    even
  1189. Xuserport    ds.l    1
  1190. X    code
  1191. X
  1192. X;=======================================
  1193. X;= Initialisation code for Big Brother =
  1194. X;=======================================
  1195. Xmymain    move.l    $4,a6
  1196. X    lea.l    DosName,a1
  1197. X    clr.l    d0
  1198. X    jsr    _LVOOpenLibrary(a6)
  1199. X    move.l    d0,DOSBase
  1200. X    beq    nodos
  1201. X    bsr    loadprefs
  1202. X    move.l    $4,a6
  1203. X    clr.l    d0
  1204. X    lea.l    IntuitionName,a1
  1205. X    jsr    _LVOOpenLibrary(a6)
  1206. X    move.l    d0,IntuitionBase
  1207. X    beq    nointuition
  1208. X    clr.l    d0
  1209. X    lea.l    GraphicsName,a1
  1210. X    jsr    _LVOOpenLibrary(a6)
  1211. X    move.l    d0,GfxBase
  1212. X    beq    nographics
  1213. X
  1214. X    bsr.s    initall            ; Open inputdevice etc.
  1215. X    bra    check            ; Jump to checkroutine
  1216. X    
  1217. X
  1218. X;==================================
  1219. X;= loadprefs: tries to load prefs =
  1220. X;==================================
  1221. Xloadprefs:
  1222. X    move.l    DOSBase,a6
  1223. X    move.l    #prefs_file,d1
  1224. X    move.l    #-2,d2
  1225. X    jsr    _LVOLock(a6)
  1226. X    move.l    d0,lock
  1227. X    beq    no_prefs
  1228. X    move.l    #prefs_file,d1
  1229. X    move.l    #1005,d2
  1230. X    jsr    _LVOOpen(a6)
  1231. X    move.l    d0,filehandle
  1232. X    move.l    d0,d1
  1233. X    move.l    #DoIOVector,d2
  1234. X    moveq    #4,d3
  1235. X    jsr    _LVORead(a6)
  1236. X    move.l    filehandle,d1
  1237. X    jsr    _LVOClose(a6)
  1238. X    move.l    lock,d1
  1239. X    jsr    _LVOUnLock(a6)
  1240. Xno_prefs:
  1241. X    rts
  1242. X    
  1243. X
  1244. X;=============================================
  1245. X;= Routine to install a input device handler =
  1246. X;=============================================
  1247. X
  1248. X
  1249. Xinitall:                    ; Open inputdevice
  1250. X    move.b    #0,signal
  1251. X    move.b    #0,Flag
  1252. X    move.b    #0,drive            ; df0: is default
  1253. X
  1254. X    move.l    $4,a6            ; Make a message port
  1255. X    moveq    #-1,d0
  1256. X    jsr    _LVOAllocSignal(a6)
  1257. X    lea.l    InputDevPort,a0
  1258. X    move.b    d0,mp_SigBit(a0)
  1259. X    move.b    #0,mp_Node+Ln_Pri(a0)
  1260. X    move.b    #NT_MSGPORT,mp_Node+Ln_Type(a0)
  1261. X    move.l    #MyPortName,mp_Node+Ln_Name(a0)
  1262. X    move.b    #PA_SIGNAL,mp_Flags(a0)
  1263. X    sub.l    a1,a1
  1264. X    jsr    _LVOFindTask(a6)
  1265. X    move.l    d0,a3
  1266. X    move.l    #-1,WindowPtr(a3)    ; I don't want requesters
  1267. X    lea.l    InputDevPort,a0
  1268. X    move.l  d0,mp_SigTask(a0)
  1269. X    move.l    a0,a1
  1270. X    jsr    _LVOAddPort(a6)
  1271. X
  1272. X    lea.l    InputRequestBlock,a0
  1273. X    move.b    #NT_MESSAGE,io_Message+mn_Node+Ln_Type(a0)
  1274. X    move.w    #$30,io_Message+mn_Length(a0)
  1275. X    lea.l    InputDevPort,a1
  1276. X    move.l    a1,io_Message+mn_ReplyPort(a0)
  1277. X
  1278. X    lea.l    HandlerStuff,a1
  1279. X    move.l    #myhandler,is_Code(a1)
  1280. X    move.b    #127,is_Node+Ln_Pri(a1)
  1281. X    move.l    #0,is_Data(a1)
  1282. X    
  1283. X    lea.l    InputRequestBlock,a1
  1284. X    lea.l    InputDeviceName,a0
  1285. X    clr.l    d0
  1286. X    clr.l    d1
  1287. X    jsr    _LVOOpenDevice(a6)
  1288. X
  1289. X    lea.l    InputRequestBlock,a0
  1290. X    move.w    #IND_ADDHANDLER,io_Command(a0)
  1291. X    move.l    #HandlerStuff,io_Data(a0)
  1292. X    move.l    a0,a1
  1293. X    jsr    _LVODoIO(a6)        ; Install handler
  1294. X
  1295. X    rts
  1296. X    
  1297. X;====================================
  1298. X;=    Code for checking the Amiga   =
  1299. X;====================================
  1300. X
  1301. X
  1302. Xcheck    bsr    checkevents        ; Any messages ???
  1303. X    bsr.s    chlus            ; Check routine
  1304. X    move.l    DOSBase,a6
  1305. X    moveq    #50,d1
  1306. X    jsr    _LVODelay(a6)
  1307. X    bra.s    check
  1308. X
  1309. Xchlus    move.l    $4,a0
  1310. X    move.l    a0,a6
  1311. X    clr.l    d2
  1312. X    tst.l    42(a0)
  1313. X    beq.s    1$
  1314. X    ori.l    #1,d2
  1315. X1$    tst.l    46(a0)
  1316. X    beq.s    2$
  1317. X    ori.l    #1,d2
  1318. X2$    tst.l    546(a0)
  1319. X    beq.s    3$
  1320. X    ori.l    #2,d2
  1321. X3$    tst.l    550(a0)
  1322. X    beq.s    4$
  1323. X    ori.l    #2,d2
  1324. X4$    lea.l    350(a0),a0
  1325. X    lea.l    devicename,a1
  1326. X    move.l    $4,a6    
  1327. X     jsr    _LVOFindName(a6)
  1328. X    move.l    d0,a0
  1329. X    move.l    -28(a0),d1
  1330. X    cmp.l    #$fc0000,d1
  1331. X    bhs.s    5$
  1332. X    ori.l    #8,d2
  1333. X5$    move.l    $4,a0
  1334. X    move.l    -454(a0),d1
  1335. X    cmp.l    DoIOVector,d1
  1336. X    beq.s    6$
  1337. X    ori.l    #4,d2
  1338. X6$    lea.l    TaskName,a1
  1339. X    jsr    _LVOFindTask(a6)
  1340. X    tst.l    d0
  1341. X    beq.s    7$
  1342. X    ori.l    #16,d2
  1343. X7$    andi.l    #31,d2
  1344. X    move.l    d2,memorymask
  1345. X    moveq    #0,d0
  1346. X    lea.l    expert,a0
  1347. X    move.b    0(a0,d2),d0
  1348. X    cmp.b    #0,d0
  1349. X    beq.s    novirus
  1350. X    cmp.b    #2,d0
  1351. X    beq.s    novirus
  1352. X    move.b    d0,signal
  1353. Xnovirus
  1354. X    rts
  1355. X    
  1356. X        
  1357. X;======================================================
  1358. X;= The Input Device Handler for checking the Help Key =
  1359. X;======================================================
  1360. X
  1361. Xmyhandler            ; The input_handler
  1362. X    cmp.b    #IECLASS_RAWKEY,4(a0)
  1363. X    beq.s    akey
  1364. Xnoop    move.l    a0,d0        ; Return head of list
  1365. X    rts
  1366. Xakey    move.w    8(a0),d0
  1367. X    and.w    #IEQUALIFIER_CONTROL,d0        ; Mask Control bit
  1368. X    beq.s    noop                ; None of my keys
  1369. X    cmp.w    #HELP_KEY,6(a0)
  1370. X    bne.s    1$        ; Check next key
  1371. X    move.w    #HELP_KEY,keyfound
  1372. X    bra    needed
  1373. X1$    cmp.w    #FUNC_F1,6(a0)
  1374. X    bne.s    2$
  1375. X    move.w    #FUNC_F1,keyfound
  1376. X    bra    needed
  1377. X2$    cmp.w    #FUNC_F2,6(a0)
  1378. X    bne.s    3$
  1379. X    move.w    #FUNC_F2,keyfound
  1380. X    bra    needed
  1381. X3$    cmp.w    #FUNC_F3,6(a0)
  1382. X    bne.s    4$
  1383. X    move.w    #FUNC_F3,keyfound
  1384. X    bra    needed
  1385. X4$    cmp.w    #FUNC_F4,6(a0)
  1386. X    bne.s    5$
  1387. X    move.w    #FUNC_F4,keyfound
  1388. X    bra    needed
  1389. X5$    cmp.w    #FUNC_F5,6(a0)
  1390. X    bne.s    6$
  1391. X    move.w    #FUNC_F5,keyfound
  1392. X    bra    needed
  1393. X6$    cmp.w    #FUNC_F6,6(a0)
  1394. X    bne.s    7$
  1395. X    move.w    #FUNC_F6,keyfound
  1396. X    bra    needed
  1397. X7$    cmp.w    #FUNC_F7,6(a0)
  1398. X    bne.s    8$
  1399. X    move.w    #FUNC_F7,keyfound
  1400. X    bra    needed
  1401. X8$    cmp.w    #FUNC_F8,6(a0)
  1402. X    bne.s    9$
  1403. X    move.w    #FUNC_F8,keyfound
  1404. X    bra    needed
  1405. X9$    cmp.w    #FUNC_F9,6(a0)
  1406. X    bne.s    10$
  1407. X    move.w    #FUNC_F9,keyfound
  1408. X    bra    needed
  1409. X10$    cmp.w    #FUNC_F10,6(a0)
  1410. X    bne    noop
  1411. X    move.w    #FUNC_F10,keyfound
  1412. Xneeded    move.b    #1,Flag        ; Big Brother Control Window is needed !
  1413. X    move.l    (a0),a0
  1414. X    cmp.l    #0,a0
  1415. X    beq.s    out
  1416. X    bra    myhandler    ; Process more events !
  1417. Xout    clr.l    d0        ; End of chain
  1418. X    rts
  1419. X
  1420. X;=====================================================
  1421. X;= Checks if an event has occured and responds to it =
  1422. X;=====================================================
  1423. X    
  1424. Xcheckevents
  1425. X    clr.l    d0
  1426. X    move.b    signal,d0
  1427. X    beq.s    no_virus_signal
  1428. X    cmp.b    #2,d0
  1429. X    beq.s    no_virus_signal
  1430. X    bra.s    activate    ; Open window etc., a virus !!!
  1431. Xno_virus_signal:
  1432. X    move.b    Flag,d0
  1433. X    beq.s    1$        ; No keys has been pressed
  1434. X    move.w    keyfound,d0
  1435. X    cmp.w    #FUNC_F1,d0
  1436. X    beq    newcli        ; Spawn a cli
  1437. X    cmp.w    #HELP_KEY,d0
  1438. X    beq.s    activate
  1439. X    bra    do_function_keys
  1440. X1$    rts
  1441. X
  1442. X;=========================================================
  1443. X;= Routine for the window processing in case of an event =
  1444. X;=========================================================
  1445. X
  1446. Xactivate
  1447. X    move.l    IntuitionBase,a6
  1448. X    jsr    _LVOWBenchToFront(a6)
  1449. X    move.l    #NewWindowStructure1,a0
  1450. X    jsr    _LVOOpenWindow(a6)
  1451. X    move.l    d0,window
  1452. X    move.l    d0,a0
  1453. X    move.l    wd_RPort(a0),rp
  1454. X    move.l    rp,a0
  1455. X    move.l    #Border2,a1
  1456. X    moveq    #0,d0
  1457. X    moveq    #0,d1
  1458. X    jsr    _LVODrawBorder(a6)    
  1459. X    bsr    printstatus
  1460. Xwaitloop:
  1461. X    move.l    window,a0
  1462. X    move.l    wd_UserPort(a0),a0
  1463. X    move.l    a0,userport
  1464. X    moveq    #0,d1
  1465. X    move.b    mp_SigBit(a0),d1
  1466. X    moveq    #1,d0
  1467. X    asl.l    d1,d0
  1468. X    move.l    $4,a6
  1469. X    jsr    _LVOWait(a6)    ; Wait for an event
  1470. Xlook    move.l    $4,a6
  1471. X    move.l    userport,a0    ; Get UserPort
  1472. X    jsr    _LVOGetMsg(a6)    ; Get Message from IDCMP Port
  1473. X    tst.l    d0
  1474. X    beq    waitloop    ; No more messages left
  1475. X    move.l    d0,a1
  1476. X    move.l    im_Class(a1),d4
  1477. X    move.l    im_Code(a1),d5
  1478. X    move.l    im_Address(a1),a2
  1479. X    jsr    _LVOReplyMsg(a6) ; Reply the message
  1480. X
  1481. X    cmp.l    #CLOSEWINDOW,d4
  1482. X    beq.s    watchmode
  1483. X    cmp.l    #GADGETUP,d4
  1484. X    bne.s    look
  1485. X
  1486. X    bsr.s    process_gadgets    ; Someone has pressed a gadget
  1487. X    cmp.w    #WATCH,d0
  1488. X    bne.s    look
  1489. X
  1490. Xwatchmode:
  1491. X    move.l    IntuitionBase,a6
  1492. X    move.l    window,a0
  1493. X    jsr    _LVOCloseWindow(a6)
  1494. X    move.b    #0,Flag
  1495. X    move.b    #0,signal
  1496. X    rts
  1497. X
  1498. X;==================================
  1499. X;= Routine for processing Gadgets =
  1500. X;==================================
  1501. X
  1502. Xprocess_gadgets:
  1503. X    move.w    gg_GadgetID(a2),d0
  1504. X    cmp.w    #WATCH,d0
  1505. X    bne.s    1$
  1506. X    rts
  1507. X1$    cmp.w    #DRIVE,d0
  1508. X    beq.s    nextdrive
  1509. X    cmp.w    #CLEAR,d0
  1510. X    beq    clearmemory
  1511. X    cmp.w    #VIEW,d0
  1512. X    beq    viewbootblock
  1513. X    cmp.w    #INSTALL,d0
  1514. X    beq    installdisk
  1515. X    cmp.w    #MEMORY,d0
  1516. X    beq    viewmemory
  1517. X    cmp.w    #NEWSHELL,d0
  1518. X    beq    newcli
  1519. X    cmp.w    #HELP,d0
  1520. X    beq    showhelp
  1521. X    cmp.w    #REBOOT,d0
  1522. X    beq    reboot
  1523. X    clr.l    d0        ; Clear d0 if GadgetID <> WATCH
  1524. X    rts
  1525. X
  1526. X;==============================
  1527. X;= Finds next available drive =
  1528. X;==============================
  1529. X
  1530. Xnextdrive:
  1531. X    move.b    drive,d0
  1532. X    addq    #1,d0
  1533. X    cmp.b    #4,d0        ; drive number too high ???
  1534. X    bne.s    1$
  1535. X    moveq    #0,d0        ; just select df0:
  1536. X1$    cmp.b    #0,d0
  1537. X    bne.s    2$
  1538. X    move.l    df0,ITextText1
  1539. X2$    cmp.b    #1,d0
  1540. X    bne.s    3$
  1541. X    move.l    df1,ITextText1
  1542. X3$    cmp.b    #2,d0
  1543. X    bne.s    4$
  1544. X    move.l    df2,ITextText1
  1545. X4$    cmp.b    #3,d0
  1546. X    bne.s    5$
  1547. X    move.l    df3,ITextText1
  1548. X5$    move.b    d0,drive
  1549. X    move.l    #ITextText1,d1
  1550. X    move.l    DOSBase,a6
  1551. X    jsr    _LVODeviceProc(a6)    ; Does drive exists ?
  1552. X    tst.l    d0
  1553. X    bne.s    6$        ; Yeah
  1554. X    bra.s    nextdrive    ; Try next drive
  1555. X6$    move.l    #Gadget1,a0
  1556. X    move.l    window,a1
  1557. X    move.l    #0,a2
  1558. X    move.l    IntuitionBase,a6
  1559. X    jsr    _LVORefreshGadgets(a6)
  1560. X    clr.l    d0
  1561. X    rts
  1562. X
  1563. X;================================
  1564. X;= Clears memory area from viri =
  1565. X;================================
  1566. X
  1567. Xclearmemory:
  1568. X    bsr    yesno            ; Are you sure????
  1569. X    tst.l    d0
  1570. X    beq    clearexit        ; Noop
  1571. X    move.l    $4,a6
  1572. X    jsr    _LVODisable(a6)
  1573. X    lea.l    TaskName,a1
  1574. X    jsr    _LVOFindTask(a6)
  1575. X    tst.l    d0
  1576. X    beq.s    1$            ; No rad
  1577. X    move.l    d0,a1
  1578. X    jsr    _LVORemTask(a6)        ; Kill it!!!
  1579. X1$    move.l    $4,a6
  1580. X    clr.l    42(a6)
  1581. X    clr.l    46(a6)
  1582. X    clr.l    546(a6)
  1583. X    clr.l    550(a6)
  1584. X    clr.l    554(a6)
  1585. X    move.l    DoIOVector,-454(a6)
  1586. X    clr.l    d1
  1587. X    lea.l    34(a6),a0
  1588. X    move.w    #$16,d0
  1589. Xloop    add.w    (a0)+,d1
  1590. X    dbf    d0,loop
  1591. X    not.w    d1
  1592. X    move.w    d1,82(a6)
  1593. X    jsr    _LVOEnable(a6)
  1594. X    move.l    IntuitionBase,a6
  1595. X    move.l    #0,a0
  1596. X    jsr    _LVODisplayBeep(a6)
  1597. X    move.l    $4,a6
  1598. X    move.b    #0,signal
  1599. X    bsr    chlus            ; Check memory
  1600. X    bsr    printstatus        ; Show current memory status
  1601. Xclearexit:
  1602. X    clr.l     d0            ; No WATCH Gadget
  1603. X    rts
  1604. X
  1605. X;====================================
  1606. X;= Are you sure to clear memory???? =
  1607. X;====================================
  1608. X
  1609. Xyesno:
  1610. X    move.l    IntuitionBase,a6
  1611. X    move.l    #0,d0
  1612. X    move.l    #Alertstring,a0
  1613. X    move.l    #50,d1
  1614. X    jsr    _LVODisplayAlert(a6)
  1615. X    rts
  1616. X
  1617. X;====================================
  1618. X;= Are you sure to reboot????       =
  1619. X;====================================
  1620. X
  1621. Xyesno2:
  1622. X    move.l    IntuitionBase,a6
  1623. X    move.l    #0,d0
  1624. X    move.l    #Alertstring2,a0
  1625. X    move.l    #50,d1
  1626. X    jsr    _LVODisplayAlert(a6)
  1627. X    rts
  1628. X
  1629. X
  1630. X
  1631. X
  1632. X
  1633. X;==================================================
  1634. X;= Routine shows a bootblock in ascii in a window =
  1635. X;==================================================
  1636. X
  1637. Xviewbootblock:
  1638. X    move.w    #534,hsize        ; Adjust windowwidth
  1639. X    move.w    #150,hsize+2        ; Adjust height
  1640. X    lea.l    InitTitle,a0
  1641. X    move.l    a0,title2
  1642. X    move.l    IntuitionBase,a6
  1643. X    move.l    #NewWindowStructure2,a0
  1644. X    jsr    _LVOOpenWindow(a6)
  1645. X    move.l    d0,window2
  1646. X    move.l    d0,a0
  1647. X    move.l    wd_RPort(a0),rp2
  1648. X
  1649. X    move.l    $4,a6
  1650. X    move.l    #1024,d0
  1651. X    moveq    #2,d1            ; Chip memory needed
  1652. X    jsr    _LVOAllocMem(a6)    ; Allocate buffer for bootblock
  1653. X    move.l    d0,buffer
  1654. X    
  1655. X    bsr    readbootblock
  1656. X    move.b    io_error,d0
  1657. X    cmp.b    #29,d0
  1658. X    bne    1$            ; Disk is available
  1659. X
  1660. X    move.l    window2,a0
  1661. X    move.l    #-234,d0
  1662. X    move.l    #-100,d1
  1663. X    move.l    IntuitionBase,a6
  1664. X    jsr    _LVOSizeWindow(a6)    ; Make window smaller
  1665. X    move.l    #disk_changed,Mt5
  1666. X    move.l    #disk_changed,Mt6
  1667. X    move.l    rp2,a0
  1668. X    clr.l    d0
  1669. X    clr.l    d1
  1670. X    move.l    #MyTekst5,a1
  1671. X    jsr    _LVOPrintIText(a6)    ; No disk !
  1672. X    bra    2$            ; skip printbuffer
  1673. X
  1674. X
  1675. X1$    bsr    printbuffer
  1676. X
  1677. X2$    move.l    buffer,a1
  1678. X    move.l    #1024,d0
  1679. X    move.l    $4,a6
  1680. X    jsr    _LVOFreeMem(a6)        ; Free buffer for bootblock
  1681. X
  1682. X    move.l    window2,a0
  1683. X    bsr    waitforclose        ; Wait for closegadget
  1684. X
  1685. X    move.l    IntuitionBase,a6
  1686. X    move.l    window2,a0
  1687. X    jsr    _LVOCloseWindow(a6)
  1688. X    clr.l    d0            ; No WATCH Gadget
  1689. X    rts
  1690. X
  1691. X;====================================
  1692. X;= Routine for installing your disk =
  1693. X;====================================
  1694. X
  1695. Xinstalldisk:
  1696. X    move.w    #300,hsize
  1697. X    move.w    #50,hsize+2        ; Adjust height
  1698. X    lea.l    InstallTitle,a0
  1699. X    move.l    a0,title2
  1700. X    move.l    IntuitionBase,a6
  1701. X    move.l    #NewWindowStructure2,a0
  1702. X    jsr    _LVOOpenWindow(a6)
  1703. X    move.l    d0,window2
  1704. X    move.l    d0,a0
  1705. X    move.l    wd_RPort(a0),rp2
  1706. X
  1707. X    move.l    $4,a6
  1708. X    move.l    #1024,d0
  1709. X    move.l    #2+1<<16,d1        ; Cleared Chip memory needed
  1710. X    jsr    _LVOAllocMem(a6)    ; Allocate buffer for bootblock
  1711. X    move.l    d0,buffer
  1712. X    beq    skip_install        ; Prevent a guru
  1713. X    
  1714. X    lea.l    bootcode,a0
  1715. X    move.l    d0,a1
  1716. X    move.l    #bootendcode-bootcode-1,d1
  1717. X1$    move.b    (a0)+,(a1)+        ; Copy bootblock into buffer
  1718. X    dbra    d1,1$            
  1719. X    move.l    #StandardBootBlock,a0
  1720. X    move.l    #Standardend-StandardBootBlock-1,d1
  1721. X2$    move.b    (a0)+,(a1)+
  1722. X    dbra    d1,2$
  1723. X
  1724. X    bsr    sum
  1725. X    bsr    writebuffer
  1726. X
  1727. X    move.l    buffer,a1
  1728. X    move.l    #1024,d0
  1729. X    move.l    $4,a6
  1730. X    jsr    _LVOFreeMem(a6)        ; Free buffer for bootblock
  1731. X
  1732. X    tst.b    io_error
  1733. X    bne.s    3$            ; An error has occured
  1734. X    move.l    #install_message,Mt5
  1735. X    move.l    #install_message,Mt6
  1736. X    bra.s    install_m
  1737. X3$    move.b    io_error,d0
  1738. X    cmp.b    #28,d0            ; disk protected???
  1739. X    bne    4$
  1740. X    move.l    #disk_protected,Mt5
  1741. X    move.l    #disk_protected,Mt6
  1742. X    bra    install_m
  1743. X4$    cmp.b    #29,d0            ; disk changed ????
  1744. X    bne    5$
  1745. X    move.l    #disk_changed,Mt5
  1746. X    move.l    #disk_changed,Mt6
  1747. X    bra    install_m
  1748. X5$    move.l    #install_fail,Mt5    ; Unknown failure
  1749. X    move.l    #install_fail,Mt6
  1750. Xinstall_m
  1751. X    move.l    rp2,a0
  1752. X    clr.l    d0
  1753. X    clr.l    d1
  1754. X    move.l    #MyTekst5,a1
  1755. X    move.l    IntuitionBase,a6
  1756. X    jsr    _LVOPrintIText(a6)
  1757. X    
  1758. X
  1759. X    move.l    window2,a0
  1760. X    bsr    waitforclose        ; Wait for closegadget
  1761. X
  1762. Xskip_install:
  1763. X    move.l    IntuitionBase,a6
  1764. X    move.l    window2,a0
  1765. X    jsr    _LVOCloseWindow(a6)
  1766. X    clr.l    d0            ; No WATCH Gadget
  1767. X    rts
  1768. X
  1769. X;=============================================
  1770. X;= Routine for displaying a part of ExecBase =
  1771. X;=============================================
  1772. X
  1773. X
  1774. Xviewmemory:
  1775. X    move.w    #318,hsize
  1776. X    move.w    #100,hsize+2        ; Adjust height
  1777. X    lea.l    ViewTitle,a0
  1778. X    move.l    a0,title2
  1779. X    move.l    IntuitionBase,a6
  1780. X    move.l    #NewWindowStructure2,a0
  1781. X    jsr    _LVOOpenWindow(a6)
  1782. X    move.l    d0,window2
  1783. X    move.l    d0,a0
  1784. X    move.l    wd_RPort(a0),rp2
  1785. X
  1786. X    move.l    $4,a6
  1787. X    move.l    #5*80,d0
  1788. X    move.l    #1<<16,d1            
  1789. X    jsr    _LVOAllocMem(a6)    ; Allocate buffer
  1790. X    move.l    d0,buffer
  1791. X    move.l    d0,-(a7)
  1792. X
  1793. X    move.l    d0,MTE8
  1794. X    move.l    d0,MTE8b
  1795. X    add.l    #80,d0
  1796. X    move.l    d0,MTE9
  1797. X    move.l    d0,MTE9b
  1798. X    add.l    #80,d0
  1799. X    move.l    d0,MTE10
  1800. X    move.l    d0,MTE10b
  1801. X    add.l    #80,d0
  1802. X    move.l    d0,MTE11
  1803. X    move.l    d0,MTE11b
  1804. X    add.l    #80,d0
  1805. X    move.l    d0,MTE12
  1806. X    move.l    d0,MTE12b
  1807. X
  1808. X
  1809. X
  1810. X;======== ColdCapture ==============
  1811. X
  1812. X    lea.l    coldcapture,a0
  1813. X    move.l    buffer,a1
  1814. X    bsr    stringcopy
  1815. X    
  1816. X    move.l    $4,a6
  1817. X    move.l    42(a6),a0
  1818. X    bsr    makestring
  1819. X
  1820. X
  1821. X;======= CoolCapture =============
  1822. X
  1823. X    add.l    #80,buffer    
  1824. X    lea.l    coolcapture,a0
  1825. X    move.l    buffer,a1
  1826. X    bsr    stringcopy
  1827. X    
  1828. X    move.l    $4,a6
  1829. X    move.l    46(a6),a0
  1830. X    bsr    makestring
  1831. X
  1832. X
  1833. X;======== KickMemPtr ===============
  1834. X
  1835. X    add.l    #80,buffer
  1836. X    lea.l    kickmemptr,a0
  1837. X    move.l    buffer,a1
  1838. X    bsr    stringcopy
  1839. X    
  1840. X    move.l    $4,a6
  1841. X    move.l    546(a6),a0
  1842. X    bsr    makestring
  1843. X
  1844. X
  1845. X;========== KickTagPtr ================
  1846. X
  1847. X    add.l    #80,buffer
  1848. X    lea.l    kicktagptr,a0
  1849. X    move.l    buffer,a1
  1850. X    bsr    stringcopy
  1851. X    
  1852. X    move.l    $4,a6
  1853. X    move.l    550(a6),a0
  1854. X    bsr    makestring
  1855. X
  1856. X;==== DoIO =========================
  1857. X
  1858. X    add.l    #80,buffer
  1859. X    lea.l    doio_vector,a0
  1860. X    move.l    buffer,a1
  1861. X    bsr    stringcopy
  1862. X    
  1863. X    move.l    $4,a6
  1864. X    move.l    -454(a6),a0
  1865. X    bsr    makestring
  1866. X
  1867. X;===== Rad ============================
  1868. X
  1869. X    move.l    $4,a6
  1870. X    lea.l    TaskName,a1
  1871. X    jsr    _LVOFindTask(a6)
  1872. X    tst.l    d0
  1873. X    beq.s    no_rad            ; No rad
  1874. X    move.l    #found_rad,MTE13
  1875. X    move.l    #found_rad,MTE13b
  1876. X    bra.s    rad_cont
  1877. Xno_rad    move.l    #no_found_rad,MTE13
  1878. X    move.l    #no_found_rad,MTE13b
  1879. Xrad_cont:
  1880. X
  1881. X    move.l    rp2,a0
  1882. X    clr.l    d0
  1883. X    clr.l    d1
  1884. X    move.l    #IText8,a1
  1885. X    move.l    IntuitionBase,a6
  1886. X    jsr    _LVOPrintIText(a6)
  1887. X    
  1888. X    move.l    $4,a6
  1889. X    move.l    #5*80,d0
  1890. X    move.l    (a7)+,a1            
  1891. X    jsr    _LVOFreeMem(a6)        ; Free  buffer
  1892. X    
  1893. X    move.l    window2,a0
  1894. X    bsr    waitforclose
  1895. X
  1896. X    move.l    IntuitionBase,a6
  1897. X    move.l    window2,a0
  1898. X    jsr    _LVOCloseWindow(a6)
  1899. X
  1900. X    clr.l    d0            ; No WATCH Gadget
  1901. X    rts
  1902. X
  1903. X;==============
  1904. X;= Makestring =
  1905. X;==============
  1906. X
  1907. Xmakestring:
  1908. X    move.l    $4,a6
  1909. X    lea.l    number,a1
  1910. X    bsr.s    convert
  1911. X
  1912. X    lea.l    number,a1
  1913. X    move.l    buffer,a0
  1914. X    bsr.s    stringadd
  1915. X    rts
  1916. X
  1917. X;========================
  1918. X;= Copy string a0 -> a1 =
  1919. X;========================
  1920. X
  1921. Xstringcopy:
  1922. X1$    move.b    (a0)+,d0
  1923. X    move.b    d0,(a1)+
  1924. X    bne.s     1$
  1925. X    rts
  1926. X
  1927. X;==============================
  1928. X;= Add string a1 to string a0 =
  1929. X;==============================
  1930. X
  1931. Xstringadd:
  1932. X    move.l    a2,-(a7)
  1933. X1$    cmp.b    #0,(a0)+        ; Find end of string a0
  1934. X    bne.s    1$
  1935. X    subq    #1,a0
  1936. X    move.l    a0,a2
  1937. X    move.l    a1,a0
  1938. X    move.l    a2,a1
  1939. X    bsr.s    stringcopy        ; Paste a1 to a0
  1940. X    move.l    (a7)+,a2
  1941. X    rts
  1942. X
  1943. X;==========================================
  1944. X;= Convert value in a0 to buffer a1 (Hex) =
  1945. X;==========================================
  1946. X
  1947. Xconvert:
  1948. X    movem.l    d2-d3/a2,-(a7)
  1949. X    lea.l    convtable,a2
  1950. X    move.l    a0,d1
  1951. X    moveq    #7,d3
  1952. X1$    move.l    d1,d2
  1953. X    and.l    #$f,d2
  1954. X    move.l    d2,d0
  1955. X    move.b    0(a2,d0),-(a7)
  1956. X    lsr.l    #4,d1
  1957. X    dbra    d3,1$
  1958. X    moveq    #7,d3
  1959. X2$    move.b    (a7)+,(a1)+
  1960. X    dbra    d3,2$
  1961. X    movem.l    (a7)+,d2-d3/a2
  1962. X    rts
  1963. X
  1964. X
  1965. X
  1966. X
  1967. X;=========================================
  1968. X;= Calculates lenght of string in buffer =
  1969. X;= Returns lenght in d0                  =
  1970. X;=========================================
  1971. X
  1972. Xlength:
  1973. X    clr.l    d0
  1974. X    move.l    a5,-(a7)
  1975. X    move.l    buffer,a5
  1976. X1$    addq    #1,d0
  1977. X    cmp.b    #0,(a5)+
  1978. X    bne.s    1$
  1979. X    subq    #1,d0
  1980. X    move.l    (a7)+,a5
  1981. X    rts
  1982. X;=======================================
  1983. X;= Waits for closegadget to be pressed =
  1984. X;=======================================
  1985. X
  1986. Xwaitforclose:
  1987. X    move.l    $4,a6
  1988. X    move.l    a5,-(a7)
  1989. X    move.l  a0,a5
  1990. X1$    move.l    a5,a0
  1991. X    move.l    wd_UserPort(a0),a0
  1992. X    move.l    a0,-(a7)
  1993. X    moveq    #0,d1
  1994. X    move.b    mp_SigBit(a0),d1
  1995. X    moveq    #1,d0
  1996. X    asl.l    d1,d0
  1997. X    jsr    _LVOWait(a6)    ; Wait for an event
  1998. X    move.l    (a7)+,a0    ; Get UserPort
  1999. X    jsr    _LVOGetMsg(a6)    ; Get Message from IDCMP Port
  2000. X    move.l    d0,a1
  2001. X    move.l    im_Class(a1),d4
  2002. X    jsr    _LVOReplyMsg(a6) ; Reply the message
  2003. X
  2004. X    cmp.l    #CLOSEWINDOW,d4
  2005. X    bne.s    1$
  2006. X    move.l    (a7)+,a5
  2007. X    rts
  2008. X
  2009. X
  2010. X;========================================
  2011. X;= Prints current virusstatus in window =
  2012. X;========================================
  2013. X
  2014. Xprintstatus:
  2015. X    move.l    window,a0
  2016. X    move.l    wd_RPort(a0),a1
  2017. X    move.l    a1,rp        ; Store RastPort
  2018. X
  2019. X    moveq    #0,d1
  2020. X    move.b    signal,d1
  2021. X    beq.s    1$        ; No extra message needed (=Clean)
  2022. X    cmp.b    #2,d1
  2023. X    beq.s    1$        ; The same...
  2024. X    move.l    #message,Mt3    ; System has been modified!
  2025. X    move.l    #message,Mt4
  2026. X    bra    12$
  2027. X
  2028. X1$    move.l    rp,a0        ; Clear message box
  2029. X    clr.    d0
  2030. X    clr.l    d1
  2031. X    move.l    #MyTekst3a,a1
  2032. X    move.l    IntuitionBase,a6
  2033. X    jsr    _LVOPrintIText(a6)
  2034. X    
  2035. X    move.l    #L9,Mt3        ; Clear previous(?) message!
  2036. X    move.l    #L9,Mt4
  2037. X    
  2038. X
  2039. X12$    move.l    rp,a0
  2040. X    clr.    d0
  2041. X    clr.l    d1
  2042. X    move.l    #MyTekst3,a1
  2043. X    move.l    IntuitionBase,a6
  2044. X    jsr    _LVOPrintIText(a6)
  2045. X    
  2046. X    move.b    signal,d1
  2047. X    cmp.b    #0,d1
  2048. X    bne.s    2$
  2049. X    lea.l    L0,a0
  2050. X    bra.s    10$
  2051. X2$    cmp.b    #1,d1
  2052. X    bne.s    3$
  2053. X    lea.l    L1,a0
  2054. X    bra.s    10$
  2055. X3$    cmp.b    #2,d1
  2056. X    bne.s    4$
  2057. X    lea.l    L2,a0
  2058. X    bra.s    10$
  2059. X4$    cmp.b    #3,d1
  2060. X    bne.s    5$
  2061. X    lea.l    L3,a0
  2062. X    bra.s    10$
  2063. X5$    cmp.b    #4,d1
  2064. X    bne.s    6$
  2065. X    lea.l    L4,a0
  2066. X    bra.s    10$
  2067. X6$    cmp.b    #5,d1
  2068. X    bne.s    7$
  2069. X    lea.l    L5,a0
  2070. X    bra.s    10$
  2071. X7$    cmp.b    #6,d1
  2072. X    bne.s    8$
  2073. X    lea.l    L6,a0
  2074. X    bra.s    10$
  2075. X8$    cmp.b    #7,d1
  2076. X    bne.s    9$
  2077. X    lea.l    L7,a0
  2078. X    bra.s    10$
  2079. X9$    cmp.b    #8,d1
  2080. X    bne.s    11$
  2081. X    lea.l    L8,a0
  2082. X10$    move.l    a0,Mt1
  2083. X    move.l    a0,Mt2
  2084. X    move.l    rp,a0
  2085. X    move.l    #MyTekst,a1
  2086. X    clr.l    d0
  2087. X    clr.l    d1
  2088. X    move.l    IntuitionBase,a6
  2089. X    jsr    _LVOPrintIText(a6)
  2090. X11$    rts
  2091. X
  2092. X
  2093. X;======================================
  2094. X;= Prints buffer in ascii on a window =
  2095. X;======================================
  2096. X
  2097. Xprintbuffer:
  2098. X    move.l    buffer,a3
  2099. X    move.l    a3,a4
  2100. X    move.l    #1023,d1
  2101. X    clr.l    d0
  2102. Xcloop    move.b    (a3)+,d0
  2103. X    cmp.b    #31,d0
  2104. X    bls.s    outrange
  2105. X    cmp.b    #127,d0
  2106. X    bhs.s    outrange
  2107. X    move.b    d0,(a4)+
  2108. X    dbra    d1,cloop
  2109. X    bra.s    printit
  2110. Xoutrange:
  2111. X    move.b    #'.',(a4)+
  2112. X    dbra    d1,cloop
  2113. Xprintit:
  2114. X    move.l    window2,a0
  2115. X    move.l    wd_RPort(a0),rp2
  2116. X    moveq    #0,d3
  2117. X    move.l    buffer,a3
  2118. Xploop    move.l    d3,d1
  2119. X    mulu    #8,d1
  2120. X    add.l    #20,d1
  2121. X    move.w    d1,y1
  2122. X    subq    #1,d1
  2123. X    move.w    d1,y2
  2124. X
  2125. X    
  2126. X    move.l    #dummy,a2
  2127. X    move.l    d3,d1
  2128. X    mulu    #64,d1
  2129. X    move.l    a3,a0
  2130. X    add.l    d1,a0
  2131. X    moveq    #63,d0
  2132. X1$    move.b    (a0)+,(a2)+        ; copy string to dummy
  2133. X    dbra    d0,1$
  2134. X    move.b    #0,(a2)            ; end string with 0
  2135. X
  2136. X    clr.l    d0
  2137. X    clr.l    d1
  2138. X    move.l    rp2,a0
  2139. X    lea.l    IText14,a1
  2140. X    move.l    IntuitionBase,a6
  2141. X    jsr    _LVOPrintIText(a6)
  2142. X
  2143. X    addq    #1,d3
  2144. X    cmp.l    #15,d3
  2145. X    bls.s    ploop
  2146. X    rts
  2147. X
  2148. X;============================
  2149. X;= Read bootblock in buffer =
  2150. X;============================
  2151. X
  2152. Xreadbootblock:
  2153. X    move.w    #READ,commando
  2154. X    bsr.s    bootio
  2155. X    rts
  2156. X
  2157. X;=============================
  2158. X;= Write buffer to bootblock =
  2159. X;=============================
  2160. X
  2161. Xwritebuffer:
  2162. X    move.w    #WRITE,commando
  2163. X    bsr.s    bootio
  2164. X    rts
  2165. X
  2166. X
  2167. X;==========================================
  2168. X;= Multi function boot read/write routine =
  2169. X;=                      =
  2170. X;= io_error contains error on exit          =
  2171. X;=                      =
  2172. X;==========================================
  2173. X
  2174. Xbootio:
  2175. X    move.l    $4,a6
  2176. X    
  2177. X    sub.l    a1,a1
  2178. X    jsr    _LVOFindTask(a6)
  2179. X    move.l    d0,readreply+$10
  2180. X    lea.l    readreply,a1
  2181. X    jsr    _LVOAddPort(a6)
  2182. X    lea.l    diskio,a1
  2183. X    moveq    #0,d0
  2184. X    move.b    drive,d0
  2185. X    clr.l    d1
  2186. X    lea.l    devicename,a0
  2187. X    jsr    _LVOOpenDevice(a6)
  2188. X    tst.l    d0
  2189. X    beq.s    tskip
  2190. X    lea.l    readreply,a1
  2191. X    jsr    _LVORemPort(a6)
  2192. X    bra    trackerror
  2193. Xtskip    lea.l    diskio,a1
  2194. X    move.l    buffer,40(a1)
  2195. X    move.l    #readreply,14(a1)
  2196. X    move.w    #TD_CHANGESTATE,28(a1)
  2197. X    jsr    _LVODoIO(a6)
  2198. X    move.l    diskio+32,d6
  2199. X    beq.s    tskip2
  2200. X    move.b    #29,io_error
  2201. X    bra    terror                ; No disk!
  2202. X
  2203. Xtskip2    move.w    commando,d5
  2204. X    cmp.w    #READ,d5
  2205. X    bne.s    1$                ; Don't CMD_CLEAR for a write
  2206. X    lea.l    diskio,a1            ; We will read a bootblock
  2207. X    move.l    buffer,40(a1)
  2208. X    move.l    #readreply,14(a1)        ; so, force a reading
  2209. X    move.w    #5,28(a1)
  2210. X    jsr    _LVODoIO(a6)        ; CMD_Clear (Clear trackbuffer)
  2211. X
  2212. X1$    lea.l    diskio,a1
  2213. X    move.l    #readreply,14(a1)
  2214. X    move.w    commando,28(a1)
  2215. X    move.l    buffer,40(a1)
  2216. X    move.l    #1024,36(a1)
  2217. X    move.l    #0,44(a1)
  2218. X    move.l    $4,a6
  2219. X    jsr    _LVODoIO(a6)
  2220. X    move.b    diskio+31,io_error        ; Error number
  2221. X
  2222. X    move.w    commando,d5
  2223. X    cmp.w    #WRITE,d5
  2224. X    bne.s    2$
  2225. X
  2226. X    lea.l    diskio,a1
  2227. X    move.l    buffer,40(a1)
  2228. X    move.l    #readreply,14(a1)
  2229. X    move.w    #4,28(a1)        ; CMD_UPDATE
  2230. X    move.l    $4,a6
  2231. X    jsr    _LVODoIO(a6)        ; Write all buffers out
  2232. X    move.b    diskio+31,io_error    ; Get error number
  2233. X
  2234. X2$    tst.b    io_error
  2235. X    beq.s    tgood
  2236. Xterror    lea.l    errormessage,a1
  2237. X    move.l    window2,a0
  2238. X    move.l    #0,a2
  2239. X    move.l    IntuitionBase,a6
  2240. X    jsr    _LVOSetWindowTitles(a6)
  2241. X    move.l    $4,a6
  2242. X    
  2243. Xtgood    lea.l    diskio,a1
  2244. X    move.w    #9,28(a1)        ; TD_MOTOR
  2245. X    move.l    #0,36(a1)
  2246. X    jsr    _LVODoIO(a6)
  2247. X
  2248. X    lea.l    readreply,a1
  2249. X    jsr    _LVORemPort(a6)
  2250. X    lea.l    diskio,a1
  2251. X    jsr    _LVOCloseDevice(a6)
  2252. X
  2253. Xtrackerror:
  2254. X    rts
  2255. X
  2256. X;================================
  2257. X;= The maincode of my Bootblock =
  2258. X;================================
  2259. X
  2260. Xbootcode:
  2261. X    dc.b    'DOS',0
  2262. X    dc.l    0
  2263. Xroot    dc.l    880
  2264. Xmain    move.l    $4,a6
  2265. X    lea.l    Dosname(pc),a1
  2266. X    jsr    _LVOFindResident(a6)
  2267. X    move.l    d0,a0
  2268. X    move.l    22(a0),a0
  2269. X    clr.l    d0
  2270. X    rts
  2271. XDosname    dc.b    'dos.library',0
  2272. Xbootendcode:
  2273. X
  2274. X;=========================================================
  2275. X;= Routine which calculates the checksum of my bootblock =
  2276. X;=========================================================
  2277. X    even
  2278. X
  2279. Xsum    clr.l    d0
  2280. X    move.l    buffer,a0
  2281. X    move.l    #255,d1
  2282. Xsumloop    add.l    (a0)+,d0
  2283. X    bcc.s    sumcont
  2284. X    addq    #1,d0
  2285. Xsumcont    dbra    d1,sumloop
  2286. X    moveq    #-1,d1
  2287. X    sub.l    d0,d1
  2288. X    move.l    buffer,a2
  2289. X    move.l    d1,4(a2)
  2290. X    rts
  2291. X
  2292. X;===============================================
  2293. X;= This routine will spawn a new cli using arp =
  2294. X;===============================================
  2295. X
  2296. Xnewcli:
  2297. X    move.l    $4,a6
  2298. X    lea.l    ArpName,a1
  2299. X    clr.l    d0
  2300. X    jsr    _LVOOpenLibrary(a6)
  2301. X    move.l    d0,ArpBase
  2302. X    bne    1$
  2303. X    move.l    IntuitionBase,a6    ; Arp is not available
  2304. X    move.l    #0,a0
  2305. X    jsr    _LVODisplayBeep(a6)
  2306. X    bra    2$
  2307. X1$    move.l    ArpBase,a6
  2308. X    lea.l    CONNAME,a0
  2309. X    move.l    #0,a1
  2310. X    lea.l    newshell,a2
  2311. X    jsr    _ASyncRun(a6)
  2312. X    move.l    $4,a6
  2313. X    move.l    ArpBase,a1
  2314. X    jsr    _LVOCloseLibrary(a6)    ; Close Arp
  2315. X2$    move.b    #0,Flag            ; Clear key signal
  2316. X    move.b    #0,keyfound
  2317. X    clr.l    d0
  2318. X    rts    
  2319. X
  2320. X
  2321. Xdo_function_keys:
  2322. X    cmp.w    #FUNC_F2,d0
  2323. X    bne    1$
  2324. X    lea.l    script2,a0
  2325. X    bra    cont
  2326. X1$    cmp.w    #FUNC_F3,d0
  2327. X    bne    2$
  2328. X    lea.l    script3,a0
  2329. X    bra    cont
  2330. X2$    cmp.w    #FUNC_F4,d0
  2331. X    bne    3$
  2332. X    lea.l    script4,a0
  2333. X    bra    cont
  2334. X3$    cmp.w    #FUNC_F5,d0
  2335. X    bne    4$
  2336. X    lea.l    script5,a0
  2337. X    bra    cont
  2338. X4$    cmp.w    #FUNC_F6,d0
  2339. X    bne    5$
  2340. X    lea.l    script6,a0
  2341. X    bra    cont
  2342. X5$    cmp.w    #FUNC_F7,d0
  2343. X    bne    6$
  2344. X    lea.l    script7,a0
  2345. X    bra    cont
  2346. X6$    cmp.w    #FUNC_F8,d0
  2347. X    bne    7$
  2348. X    lea.l    script8,a0
  2349. X    bra    cont
  2350. X7$    cmp.w    #FUNC_F9,d0
  2351. X    bne    8$
  2352. X    lea.l    script9,a0
  2353. X    bra    cont
  2354. X8$    cmp.w    #FUNC_F10,d0
  2355. X    bne    ret
  2356. X    lea.l    script10,a0
  2357. Xcont    move.l    a0,d1
  2358. X    clr.l    d2
  2359. X    clr.l    d3
  2360. X    move.l    DOSBase,a6
  2361. X    jsr    _LVOExecute(a6)
  2362. X
  2363. Xret    move.b    #0,Flag            ; Clear key signal
  2364. X    move.b    #0,keyfound
  2365. X    clr.l    d0
  2366. X    rts    
  2367. X
  2368. X
  2369. X;====================================
  2370. X;= Help routine: shows credits+help =
  2371. X;====================================
  2372. X
  2373. Xshowhelp:
  2374. X    move.w    #418,hsize
  2375. X    move.w    #130,hsize+2        ; Adjust height
  2376. X    move.l    #HelpTitle,title2
  2377. X    move.l    IntuitionBase,a6
  2378. X    move.l    #NewWindowStructure2,a0
  2379. X    jsr    _LVOOpenWindow(a6)
  2380. X    move.l    d0,window2
  2381. X    move.l    d0,a0
  2382. X    move.l    wd_RPort(a0),a0
  2383. X    move.l    #Text15,a1
  2384. X    clr.l    d0
  2385. X    clr.l    d1
  2386. X    jsr    _LVOPrintIText(a6)
  2387. X
  2388. X    move.l    window2,a0
  2389. X    bsr    waitforclose
  2390. X
  2391. X    move.l    IntuitionBase,a6
  2392. X    move.l    window2,a0
  2393. X    jsr    _LVOCloseWindow(a6)
  2394. X
  2395. X    clr.l    d0
  2396. X    rts
  2397. X
  2398. X;======================
  2399. X;= The reboot routine =
  2400. X;======================
  2401. X
  2402. Xreboot    bsr    yesno2                ; Want to reboot???
  2403. X    tst.l    d0
  2404. X    bne.s    1$                ; noop
  2405. X    rts
  2406. X1$    move.l    $4,a6
  2407. X    move.l    #-1,$4
  2408. X    cmp.w    #V36_EXEC,LIB_VERSION(a6)
  2409. X    blt.s    old_exec
  2410. X    jmp    TEMP_ColdReboot(a6)     ;Let Exec do it...
  2411. X    ;NOTE: Control flow never returns to here
  2412. X
  2413. X
  2414. Xold_exec:    
  2415. X    lea.l    GoAway(pc),a5           ;address of code to execute
  2416. X    jsr    _LVOSupervisor(a6)      ;trap to code at (a5)...
  2417. X    ;NOTE: Control flow never returns to here
  2418. X
  2419. X
  2420. X;-------------- MagicResetCode ---------DO NOT CHANGE-----------------------
  2421. X
  2422. X        CNOP    0,4            ;IMPORTANT! Longword align!
  2423. XGoAway:     lea.l    MAGIC_ROMEND,a0     ;(end of ROM)
  2424. X        sub.l    MAGIC_SIZEOFFSET(a0),a0 ;(end of ROM)-(ROM size)=PC
  2425. X        move.l    4(a0),a0                ;Get Initial Program Counter
  2426. X        subq.l    #2,a0            ;now points to second RESET
  2427. X        reset                ;first RESET instruction
  2428. X        jmp    (a0)                    ;CPU Prefetch executes this
  2429. X        ;NOTE: the RESET and JMP instructions must share a longword!
  2430. X
  2431. X;---------------------------------------DO NOT CHANGE-----------------------
  2432. X
  2433. X
  2434. X
  2435. X;=======================
  2436. X;= The Cleanup Routine =
  2437. X;=======================
  2438. X
  2439. Xexit    move.l    $4,a6
  2440. X    move.l    GfxBase,a1
  2441. X    jsr    _LVOCloseLibrary(a6)
  2442. Xnographics:
  2443. X    move.l    IntuitionBase,a1
  2444. X    jsr    _LVOCloseLibrary(a6)
  2445. Xnointuition:
  2446. X    move.l    DOSBase,a1
  2447. X    jsr    _LVOCloseLibrary(a6)
  2448. Xnodos    rts
  2449. X
  2450. X;=========================
  2451. X;= The end of the source =
  2452. X;=========================    
  2453. X
  2454. X    end
  2455. X
  2456. X
  2457. X
  2458. X
  2459. END_OF_FILE
  2460. if test 42429 -ne `wc -c <'bigbrother.asm'`; then
  2461.     echo shar: \"'bigbrother.asm'\" unpacked with wrong size!
  2462. fi
  2463. # end of 'bigbrother.asm'
  2464. fi
  2465. if test -f 'bigbrother.doc' -a "${1}" != "-c" ; then 
  2466.   echo shar: Will not clobber existing file \"'bigbrother.doc'\"
  2467. else
  2468. echo shar: Extracting \"'bigbrother.doc'\" \(6053 characters\)
  2469. sed "s/^X//" >'bigbrother.doc' <<'END_OF_FILE'
  2470. X
  2471. XDocumentation for Bigbrother V2.11
  2472. X==================================
  2473. X
  2474. XThis document will describe the working of Bigbrother V2.11 for
  2475. Xthe Commodore Amiga computer. Bigbrother and all related programs
  2476. Xand documents are presented as is. Although the author has made
  2477. Xevery effort to make this product free of bugs, he can not be
  2478. Xheld responsible for any damage resulting from the use of this
  2479. Xprogram. The program is shareware. It may be copied but may not be
  2480. Xused as a part of a commercial package without the prior written
  2481. Xpermission of the author. If you like the program and if you are using 
  2482. Xit regularly, you may send $10 or more to:
  2483. X       
  2484. X    Erwin van Breemen
  2485. X    Berliozplein 15
  2486. X    2651 VG Berkel ZH
  2487. X    Holland
  2488. X
  2489. X    e-mail:    breemen@rulcvx.LeidenUniv.nl
  2490. X
  2491. X
  2492. X
  2493. XFeel free to send any bugs,suggestions or comments to the above address.
  2494. X
  2495. X
  2496. XRequirements
  2497. X============
  2498. X
  2499. XBigbrother requires Kickstart 1.2 or higher. For Kickstart 1.2 it is
  2500. Xnot necessary to use the preferences file big_prefs. For Kickstart 1.3
  2501. Xor higher this file must be placed in the s: directory. It must contain 
  2502. Xthe DOIO vector pointing to the routine in the rom. Some features make
  2503. Xuse of arp.library. This library must be placed in the libs: directory
  2504. XNote that the arp.library (V39+) has not been included and can be
  2505. Xobtained on almost any BBS board. 
  2506. XThe scriptfiles included use some general script commands. See for
  2507. Xexplanation any AmigaDos manual.
  2508. X
  2509. XWhat does Bigbrother?
  2510. X=====================
  2511. X
  2512. XBigbrother is a virus infection detection program with some optional
  2513. Xutilities. It is running as a normal task and checks every 1 second
  2514. Xthe important memory locations in the Amiga. Depending on the values
  2515. Xand the their combinations, an expert system will accept it or warn
  2516. Xyou in case it thinks it is dangerous. This means that no program
  2517. Xcan start a virus in memory without alerting Bigbrother. 
  2518. XAs a bonus, Bigbrother is capable of starting a new shell, starting
  2519. Xscript files, viewing and installing bootblocks. All this in a 
  2520. Xprogram less than 10K. 
  2521. X
  2522. X
  2523. XInstallation
  2524. X============
  2525. X
  2526. XBigbrother is very easy to install. Bigbrother will detach itself
  2527. Xfrom the current shell or cli. Just put Bigbrother in the c:
  2528. Xdirectory and add the following line to your startup-sequence:
  2529. X
  2530. Xbigbrother
  2531. X
  2532. XPlace arp.library in the libs: directory.
  2533. XPut big_prefs and bighelp in your s: directory. This is all there is.
  2534. X
  2535. X
  2536. XAdditional notes.
  2537. X=================
  2538. X
  2539. XFor Kickstart 1.2 users
  2540. X
  2541. XYou must not(!) place the big_prefs in the s: directory. This file contains
  2542. Xthe DOIO vector ( needed for a virus extermination) of Kickstart 1.3. 
  2543. XBigbrother is standard configured for Kickstart 1.2. If Bigbrother finds
  2544. Xs:big_prefs then it will use it for the Clear option. For 1.2 users
  2545. Xthis means a guru.
  2546. X
  2547. XFor Kickstart 1.3 or higher users
  2548. X
  2549. XNow it is essential to have a s:big_prefs file. Otherwise Bigbrother
  2550. Xwill use the default 1.2 value of DOIO. You can use the Memory option
  2551. Xto discover it's value. Use newzap or something to alter s:big_prefs
  2552. XNote that Bigbrother will come to front if the DOIO is wrong for your 
  2553. Xmachine. This is also a method to discover the value of DOIO in your
  2554. Xmachine. The supplied big_prefs contains the value for Kickstart 1.3
  2555. X
  2556. X
  2557. X
  2558. XHow to operate Bigbrother
  2559. X=========================
  2560. X
  2561. XYou can bring Bigbrother to the front by pressing Crtl-Help. Bigbrother
  2562. Xwill open a window on the workbench. The same thing happens automaticly
  2563. Xif a virus has been detected.
  2564. XYou will see a window containing several gadgets and a message box.
  2565. XIn the message box a text will describe the current status of your
  2566. XAmiga concerning viri. Below there is a description of all gadgets:
  2567. X
  2568. X
  2569. X DF0:
  2570. X
  2571. XThis gadget will select between the diskdrives available at the moment.
  2572. XIf you have for example 2 drives, the gadget toggles between df0: and
  2573. Xdf1:. The drive selected will be used for the View and Install option.
  2574. X
  2575. X Watch
  2576. X
  2577. XWhen you press this gadget Bigbrother will close its window and return
  2578. Xto the sleeping mode. In the sleeping mode, Bigbrother checks every
  2579. Xsecond for a virus in memory and whether there has been pressed on an 
  2580. Xinteresting F-key.
  2581. X
  2582. X Newshell
  2583. X
  2584. XBigbrother will create a new shell process as you press this gadget.
  2585. XThe same can also be done by pressing Crtl-F1 in the sleeping mode.
  2586. X
  2587. X View
  2588. X
  2589. XThis option allows you to examine the bootblock of disk in the selected
  2590. Xdrive.
  2591. X
  2592. X Memory
  2593. X
  2594. XHere you can examine the actual contents of the important vectors. For
  2595. Xa clean machine, all vector should point to the Kickstart rom. This means
  2596. Xthat the addresses must point to $fc0000 or higher.
  2597. X
  2598. X
  2599. X Install
  2600. X
  2601. XIn this option you can install a bootblock on the disk in the slected
  2602. Xdiskdrive. This bootblock contains the normal bootcode plus a piece
  2603. Xof text in order to recognize it as a Bigbrother bootblock. Some viri
  2604. Xwill return a normal installed bootblock. So it is safer to use the
  2605. XBigbrother bootblock. In this way you are sure you have read a real
  2606. Xbootblock and a faked one!
  2607. X
  2608. X Clear
  2609. X
  2610. XBy pressing this option you will clear all the important vector to
  2611. Xtheir standard values. This is where big_prefs comes in. If big_prefs
  2612. Xdoesn't contain the rigth value for your Kickstart, you Amiga will hang
  2613. Xin less than a second. Note that you will lose all your resident programs
  2614. Xincluding RAD etc.
  2615. X
  2616. X
  2617. X Reboot
  2618. X
  2619. XThis option will reboot your Amiga in the official way. No viri can
  2620. Xsurvive this reset because all system structures will be recreated. 
  2621. X
  2622. X
  2623. X Help
  2624. X
  2625. XThis option will reveal my address. If you use Bigbrother, then please
  2626. Xsend $10 to that address. Many thanks in advance.
  2627. X
  2628. X
  2629. XScriptfiles
  2630. X===========
  2631. X
  2632. XBigbrother is also capable of starting scriptfiles named F2...F10 by
  2633. Xpressing , as you can guess, F2..F10. Some examples of scriptfiles
  2634. Xhave been included. The only limitation is that you can not get 
  2635. Xinput from a user (i.e. ask). This means that in practice you can
  2636. Xuse these script files to start applications like an editor.
  2637. X
  2638. X
  2639. X
  2640. XI hope this program will help you in the fight against viri.
  2641. X
  2642. X
  2643. X    Erwin van Breemen (The Orega Programming Group Holland)
  2644. X    Berliozplein 15
  2645. X    2651 VG Berkel ZH
  2646. X    Holland
  2647. X
  2648. X    e-mail:    breemen@rulcvx.LeidenUniv.nl
  2649. X
  2650. X
  2651. X
  2652. END_OF_FILE
  2653. if test 6053 -ne `wc -c <'bigbrother.doc'`; then
  2654.     echo shar: \"'bigbrother.doc'\" unpacked with wrong size!
  2655. fi
  2656. # end of 'bigbrother.doc'
  2657. fi
  2658. if test -f 'bigbrother.uu' -a "${1}" != "-c" ; then 
  2659.   echo shar: Will not clobber existing file \"'bigbrother.uu'\"
  2660. else
  2661. echo shar: Extracting \"'bigbrother.uu'\" \(14686 characters\)
  2662. sed "s/^X//" >'bigbrother.uu' <<'END_OF_FILE'
  2663. Xbegin 644 bigbrother
  2664. XM```#\P`````````&``````````4````U```#Y@```%<```0E``````````$`@
  2665. XM``/I````-2QY````!)/)3J[^VBA`2JP`K&8,0>P`7$ZN_H!.KOZ,+'D````$H
  2666. XM0_D```V,0H!.KOW8*D!G``"<+$U.KO_$(@`D/``````F/````%!.KO_0(CP`J
  2667. XM``YN)#P```/N3J[_XB/````/@"/````/A"QY````!$/Y```-O$*`3J[]V"/`V
  2668. XM````#&8```9@```\+'D````,('P`````(GP`````1?D```]V3J[]WBQY````^
  2669. XM!")Y````#$ZN_F)!^0`````A?`````#__"QY````!")-3J[^8DYU```#[```_
  2670. XM``$`````````N@````<````!````*````$(```!2````8@```&@```!T````]
  2671. XMH`````,````"````@````(X```"P`````````_(```/J```#YD)I9T)R;W1H_
  2672. XM97(@5C(N,3$@J3$Y.3`@8GD@14$@=F%N($)R965M96X*#51H92!/<F5G82!0%
  2673. XM<F]G<F%M;6EN9R!'<F]U<"!(;VQL86YD+@H-````/@`>`4H`?@`!```"0``"Q
  2674. XM$`X```'F`````````+(````````````%``7_____``$``````B8`E@`!```"_
  2675. XM```"$`@``````````````-`````````````%``7_____``%":6<@0G)O=&AE'
  2676. XM<B!6,BXQ,0`@J3$Y.#DO,3DY,`!";V]T0FQO8VLZ``!#;VYT96YT<R!O9B!%Q
  2677. XM>&5C0F%S93H`26YS=&%L;&EN9R!";V]T0FQO8VL``$AE;'```$1I<VL@:&%S9
  2678. XM(&)E96X@:6YS=&%L;&5D`$EN<W1A;&P@:&%S(&9A:6QE9```1&ES:R!I<R!WP
  2679. XM<FET92UP<F]T96-T960A``!$:7-K(&AA<R!B965N(')E;6]V960A``!3=&%NV
  2680. XM9&%R9"!";V]T0FQO8VL@8GD@5&AE($]R96=A(%!R;V=R86UM:6YG($=R;W5P4
  2681. XM($AO;&QA;F0N($-O<'ER:6=H="`Q.3@Y+#$Y.3`N($EN<W1A;&QE9"!B>2!"N
  2682. XM:6<@0G)O=&AE<B!6,BXQ,7,Z8FEG7W!R969S`````XH`'0`6`%``#P`#``$`_
  2683. XM`0```A(````````#0@````````````4```````````(``04```(R```"(O__]
  2684. XM__\!```%```",@```````````%````!0``\````/```````>`&`"``$%```"^
  2685. XM9@```E8`'`!?`0``!0```F8```````````$;```!&P`:````&@`````"``$`6
  2686. XM`"T`;@`````````````"C@$`````+`!M`````````````````@`!```M`&0`9
  2687. XM`````````````K8!`````"P`8P````````````````(``0``+0!D````````<
  2688. XM"Y4```+>`0`!```L`&,````````+E0```O("``$``"T`;@````````N5```#F
  2689. XM!@$``0``+`!M````````"Y4``````@`!```H`!D``````````````RX!````W
  2690. XM`"<`&`````````````````(``0``%0`#`````````X0```-6`@`!```6``0`7
  2691. XM```````#?@```VH!`````!4``P````````-^`````$1&,#H``"`@("``````\
  2692. XM`^8`@``N`%``#P````$``0```A(````````#M@````````````$``````@`!)
  2693. XM```/``0````````#W@```\H!``````X``P````````/>`````$UE;6]R>0``M
  2694. XM```$0@#E`!8`4``/`````0`!```"$@````````02````````````!``````"2
  2695. XM``$```T`!`````````0Z```$)@$`````#``#````````!#H`````26YS=&%LS
  2696. XM;`````2<`!T`+@!0``\````!``$```(2````````!&X````````````&````$
  2697. XM``(``0``%@`$````````!)8```2"`0`````5``,````````$E@````!7871C_
  2698. XM:`````3V`.4`+@!0``\````!``$```(2````````!,@````````````#````Y
  2699. XM``(``0``%@`$````````!/````3<`0`````5``,````````$\`````!#;&5AS
  2700. XM<@````50`(``%@!0``\````!``$```(2````````!2(````````````"````[
  2701. XM``(``0``%@`$````````!4H```4V`0`````5``,````````%2@````!6:65WJ
  2702. XM``````6N`!T`1@!0``\````!``$```(2````````!7P````````````'````3
  2703. XM``(``0``"@`$````````!:0```60`0`````)``,````````%I`````!.97=3"
  2704. XM:&5L;``````&"`#E`$8`4``/`````0`!```"$@````````7:````````````R
  2705. XM"``````"``$``!<`!`````````8"```%[@$`````%@`#````````!@(`````#
  2706. XM2&5L<`````````"``$8`4``/`````0`!```"$@````````8T````````````^
  2707. XM"0`````"``$```\`!`````````9<```&2`$`````#@`#````````!EP`````#
  2708. XM4F5";V]T```"``$```L`&@`````````````&>`$`````"@`9````````````5
  2709. XM``:,`@`!```+`"0`````````````!J`!``````H`(P`````````````&M`(`4
  2710. XM`0``"P`N``````````````;(`0`````*`"T`````````````!MP"``$```L`P
  2711. XM.``````````````&\`$`````"@`W``````````````<$`@`!```+`$(`````+
  2712. XM````````!Q@!``````H`00`````````````'+`(``0``"P!1````````````]
  2713. XM``=``0`````*`%`````````````````"``$```H```````````$2```':`$`R
  2714. XM````"0```````````1(``````@`!```+`!4````````'I```!Y`!``````H`,
  2715. XM%`````````>D```'TE1H:7,@<')O9W)A;2!I<R!P<F]G<F%M;65D(&)Y($5!S
  2716. XM('9A;B!"<F5E;65N```"``$```L`'P````````?Z```'Y@$`````"@`>````'
  2717. XM````!_H```@L0V]P>7)I9VAT(&)Y(%1H92!/<F5G82!0<F]G<F%M;6EN9R!'"
  2718. XM<F]U<"!(;VQL86YD```"``$```L`*0````````A4```(0`$`````"@`H````V
  2719. XM````"%0```B$J3$Y.#DL,3DY,"X@06YY(&-O;6UE<F-I86QL>2!B87-E9"!RS
  2720. XM97!R;V1U8VEN9P```@`!```+`#,````````(K```")@!``````H`,@``````"
  2721. XM``BL```(X&)Y(&%N>2!M96%N<R!O9B!T:&ES('-H87)E=V%R92!P<F]D=6-TC
  2722. XM(&ES(&EL;&5G86PN```"``$```L`/0````````D(```(]`$`````"@`\````#
  2723. XM````"0@```DZ268@>6]U(&9I;F0@=&AI<R!P<F]G<F%M('5S969U;&P@<&QER
  2724. XM87-E('-E;F0@)#$P```"``$```L`1P````````EB```)3@$`````"@!&````0
  2725. XM````"6(```F0=&\Z($5!('9A;B!"<F5E;65N+"!"97)L:6]Z<&QE:6X@,34LW
  2726. XM(#(V-3$@5D<```(``0``"P!1````````";@```FD`0`````*`%`````````)<
  2727. XMN```"=A"97)K96P@96X@4F]D96YR:6IS+"`@2&]L;&%N9"X```(``0``"P!E`
  2728. XM````````"@````GL`0`````*`&0````````*````"B)(96QP.B`@($-T<FPM)
  2729. XM1C$@("`N+BXN+B!.97=3:&5L;````@`!```+`&\````````*2@``"C8!````1
  2730. XM``H`;@````````I*`````"`@("`@("`@0W1R;"U(14Q0("XN+BXN($)I9T)RC
  2731. XM;W1H97(````!`@(#!`4&`P0'!P,$!P<("``!"`@%!0@(!P<("`<',#$R,S0UY
  2732. XM-C<X.6%B8V1E9@``5&AI<R!S>7-T96T@:&%S(&)E96X@;6]D:69I960N`$UEG
  2733. XM;6]R>2!I<R!C;&5A;BX`4V-A('9I<G5S+@!5;FMN;W=N('9I<G5S(&]R(&YOY
  2734. XM="!M;W5N=&5D(')A9"X`3F]N(')E<V5T('9I<G5S+@!38V$@;&EK92!V:7)U,
  2735. XM<RX`1&%S82!V:7)U<RX`1&%S82!L:6ME('9I<G5S+@!">71E0F%N9&ET(&]R-
  2736. XM($QA;65R('9I<G5S+@!5;FMN;W=N('-Y<W1E;2!C;VYF:6=U<F%T:6]N/S\_B
  2737. XM`%-Y<W1E;2!H87,@;F]T(&)E96X@;6]D:69I960N(``@("`@("`@("`@("`@;
  2738. XM("`@("`@("`@("`@("`@("`@("```%)!1`!T<F%C:V1I<VLN9&5V:6-E``!"W
  2739. XM:6="<F]T:&5R(%!O<G0`0F]O=$)L;V-K(%)E860O5W)I=&4@17)R;W(N`%)A+
  2740. XM9%1A<VL@:&%S(&)E96X@9F]U;F0N`%)A9%1A<VL@:&%S(&YO="!B965N(&9O=
  2741. XM=6YD+@!,875N8VAE9"!B>2!":6="<F]T:&5R(%8R+C$Q"@``J@\A("$@(2`A[
  2742. XM("$@(%<@02!2($X@22!.($<@(2`A("$@(2`A(``!`+`;07)E('EO=2!S=7)E\
  2743. XM('1O(&-L96%R('1H92!M96UO<GD_``$`"B=0<F5S<R`\3$5&5"!-3U5312!"4
  2744. XM55143TX^(&9O<B!/2R`@+2TM+2`@4')E<W,@/%))1TA4($U/55-%($)55%1/K
  2745. XM3CX@9F]R($-!3D-%3````*H/(2`A("$@(2`A("!7($$@4B!.($D@3B!'("$@.
  2746. XM(2`A("$@(2```0"P&T%R92!Y;W4@<W5R92!Y;W4@=V%N="!T;R!296)O;W0_H
  2747. XM(``!``HG4')E<W,@/$Q%1E0@34]54T4@0E545$]./B!F;W(@3TL@("TM+2T@^
  2748. XM(%!R97-S(#Q224=(5"!-3U5312!"55143TX^(&9O<B!#04Y#14P``&1O<RYLW
  2749. XM:6)R87)Y`&EN='5I=&EO;BYL:6)R87)Y`&=R87!H:6-S+FQI8G)A<GD``&%R6
  2750. XM<"YL:6)R87)Y`$-O;&1#87!T=7)E("T@3V9F<V5T("`@-#(@.B0`0V]O;$-AR
  2751. XM<'1U<F4@+2!/9F9S970@("`T-B`Z)`!+:6-K365M4'1R("`M($]F9G-E="`@7
  2752. XM-30V(#HD`$MI8VM486=0='(@("T@3V9F<V5T("`U-3`@.B0`1&])3R!696-TZ
  2753. XM;W(@+2!/9F9S970@+30U-"`Z)``P,#`P,#`P,`!":6="<F]T:&5R``!.24PZB
  2754. XM``!%>&5C=71E(',Z1C(`17AE8W5T92!S.D8S`$5X96-U=&4@<SI&-`!%>&5C0
  2755. XM=71E(',Z1C4`17AE8W5T92!S.D8V`$5X96-U=&4@<SI&-P!%>&5C=71E(',ZO
  2756. XM1C@`17AE8W5T92!S.D8Y`$5X96-U=&4@<SI&,3``:6YP=70N9&5V:6-E``!$V
  2757. XM1C`Z1$8Q.D1&,CI$1C,Z("`@($1O24\@=F5C=&]R.@#\!MP```^@`(@```PN9
  2758. XM`````````````````````````````````````$-/3CHP+S`O-C,Y+S<U+U1H`
  2759. XM92!/<F5G82!0<F]G<F%M;6EN9R!'<F]U<"!(;VQL86YD``````^@`!``````D
  2760. XM``````````````]"```````````````````#[````'L````!````9````&P`,
  2761. XM``"<```!Y@```?@```(````"&@```AX```(J```"3@```E(```)>```"B@``V
  2762. XM`K(```+6```"V@```NH```+N```"_@```P(```,2```#*@```TX```-2```#T
  2763. XM8@```V8```-V```#B@```YP```.D```#P@```\8```/6```#Y@```_@```0`F
  2764. XM```$'@``!"(```0R```$0@``!%0```1<```$>@``!'X```2.```$G```!*X`@
  2765. XM``2V```$U```!-@```3H```$]@``!0@```40```%+@``!3(```5"```%4```\
  2766. XM!6(```5J```%B```!8P```6<```%K@``!<````7(```%Y@``!>H```7Z```&Y
  2767. XM&@``!B(```9````&1```!E0```9T```&B```!IP```:P```&Q```!M@```;LF
  2768. XM```'````!Q0```<H```'/```!V0```>(```'C```!YP```>@```'W@``!^(`Y
  2769. XM``?R```']@``"#@```@\```(3```"%````B0```(E```"*0```BH```([```J
  2770. XM"/````D````)!```"48```E*```)6@``"5X```F<```)H```";````FT```)'
  2771. XMY```">@```GX```)_```"BX```HR```*0@``#R(```^(`````@````(```=@.
  2772. XM```'=`````$````#```/C`````````/R```#ZP```%<```/R```#Z0``!"4L*
  2773. XM>0````1#^0``#8Q"@$ZN_=@CP`````!G`!!V80``.BQY````!$*`0_D```V8<
  2774. XM3J[]V"/`````"&<`$$Q"@$/Y```-JDZN_=@CP`````1G`!`L85Y@``$L+'D``
  2775. XM````(CP```':)#S____^3J[_K"/`````IF<``#HB/````=HD/````^U.KO_B+
  2776. XM(\````"B(@`D/```#QAV!$ZN_]8B.0```*).KO_<(CD```"F3J[_IDYU$_P`!
  2777. XM`````"D3_```````*A/\```````K+'D````$</].KOZV0?D```#:$4``#Q%\E
  2778. XM````"1%\``0`""%\```+S@`*$7P````.D\E.KO[:)D`G?/____\`N$'Y````D
  2779. XMVB%``!`B2$ZN_IY!^0```*H1?``%``@Q?``P`!)#^0```-HA20`.0_D```#\`
  2780. XM(WP```)0`!(3?`!_``DC?```````#D/Y````JD'Y```.ZD*`0H%.KOY$0?D`<
  2781. XM``"J,7P`"0`<(7P```#\`"@B2$ZN_CA.=6$``=9A#BQY`````'(R3J[_.F#L-
  2782. XM('D````$+$A"@DJH`"IG!@""`````4JH`"YG!@""`````4JH`B)G!@""````V
  2783. XM`DJH`B9G!@""`````D'H`5Y#^0``"[PL>0````1.KO[L($`B*/_DLKP`_```>
  2784. XM9`8`@@````@@>0````0B*/XZLKD```\89P8`@@````1#^0``"[A.KO[:2H!G<
  2785. XM!@""````$`*"````'R/"````GG``0?D```IN$#`@`+`\``!G#+`\``)G!A/`-
  2786. XM````*4YU#"@``0`$9P0@"$YU,"@`"`)```AG\@QH`%\`!F8,,_P`7P```"1@;
  2787. XM``#(#&@`4``&9@PS_`!0````)&```+0,:`!1``9F##/\`%$````D8```H`QH0
  2788. XM`%(`!F8,,_P`4@```"1@``",#&@`4P`&9@PS_`!3````)&```'@,:`!4``9F,
  2789. XM##/\`%0````D8```9`QH`%4`!F8,,_P`50```"1@``!0#&@`5@`&9@PS_`!67
  2790. XM````)&```#P,:`!7``9F##/\`%<````D8```*`QH`%@`!F8,,_P`6````"1@$
  2791. XM```4#&@`60`&9@#_(C/\`%D````D$_P``0```"H@4+'\`````&<$8`#^_$*`X
  2792. XM3G5"@!`Y````*6<(L#P``F<"8"(0.0```"IG&#`Y````)+!\`%!G``L6L'P`N
  2793. XM7V<&8``+?$YU+'D````(3J[^JB!\````4DZN_S0CP````!`@0"/H`#(````8,
  2794. XM('D````8(GP```)&<`!R`$ZN_Y1A``<6('D````0(&@`5B/(```!6'(`$B@`]
  2795. XM#W`!XZ`L>0````1.KO["+'D````$('D```%83J[^C$J`9P#_R")`*"D`%"HI;
  2796. XM`!@D:0`<3J[^AKB\```"`&<0N+P```!`9LAA*+!\``9FP"QY````""!Y````W
  2797. XM$$ZN_[@3_```````*A/\```````I3G4P*@`FL'P`!F8"3G6P?``%9SRP?``#7
  2798. XM9P``PK!\``)G``&$L'P`!&<``F*P?``!9P`#JK!\``=G``H.L'P`"&<`"SBP_
  2799. XM?``)9P`+DD*`3G40.0```"M20+`\``1F`G``L#P``&8*(_D```[X```#?K`\'
  2800. XM``%F"B/Y```._````WZP/``"9@HC^0``#P````-^L#P``V8*(_D```\$```#S
  2801. XM?A/`````*R(\```#?BQY`````$ZN_U)*@&8"8)0@?````>8B>0```!`D?```!
  2802. XM```L>0````A.KO\B0H!.=6$``(Q*@&<``((L>0````1.KO^(0_D```NX3J[^4
  2803. XMVDJ`9P8B0$ZN_N`L>0````1"K@`J0JX`+D*N`B)"K@(F0JX"*BUY```/&/XZ[
  2804. XM0H%![@`B,#P`%M)84<C__$9!/4$`4DZN_X(L>0````@@?`````!.KO^@+'D`Q
  2805. XM```$$_P``````"EA`/OH80`%+$*`3G4L>0````@@/``````@?```#$PB/```R
  2806. XM`#).KO^F3G4L>0````@@/``````@?```#.PB/````#).KO^F3G4S_`(6````N
  2807. XMAC/\`)8```"(0?D```#0(\@```"<+'D````(('P```""3J[_-"/`````%"!`U
  2808. XM(^@`,@```!PL>0````0@/```!`!R`DZN_SHCP````"!A``9>$#D````LL#P`T
  2809. XM'68``$H@>0```!0@//___Q8B//___YPL>0````A.KO[@(_P```%4```#)B/\C
  2810. XM```!5````SH@>0```!Q"@$*!(GP```,:3J[_*&````9A``5D(GD````@(#P`Q
  2811. XM``0`+'D````$3J[_+B!Y````%&$``]XL>0````@@>0```!1.KO^X0H!.=3/\&
  2812. XM`2P```"&,_P`,@```(A!^0```/(CR````)PL>0````@@?````().KO\T(\``L
  2813. XM```4($`CZ``R````'"QY````!"`\```$`"(\``$``DZN_SHCP````"!G``#BX
  2814. XM0?D```X^(D`B/````"\2V%')__P@?````6PB/````&T2V%')__QA``<080`%E
  2815. XM4B)Y````("`\```$`"QY````!$ZN_RY*.0```"QF%B/\```!#@```R8C_```@
  2816. XM`0X```,Z8%H0.0```"RP/``<9@``&B/\```!.@```R8C_````3H```,Z8```]
  2817. XM-K`\`!UF```:(_P```%4```#)B/\```!5````SI@```6(_P```$F```#)B/\1
  2818. XM```!)@```SH@>0```!Q"@$*!(GP```,:+'D````(3J[_*"!Y````%&$``HXLS
  2819. XM>0````@@>0```!1.KO^X0H!.=3/\`3X```"&,_P`9````(A!^0```-PCR```V
  2820. XM`)PL>0````@@?````().KO\T(\`````4($`CZ``R````'"QY````!"`\```!,
  2821. XMD"(\``$``$ZN_SHCP````"`O`"/````&<"/````&A`:`````4"/````&F"/`6
  2822. XM```&K`:`````4"/````&P"/````&U`:`````4"/````&Z"/````&_`:``````
  2823. XM4"/````'$"/````')$'Y```-R")Y````(&$``58L>0````0@;@`J80`!*@:Y&
  2824. XM````4````"!!^0``#>4B>0```"!A``$N+'D````$(&X`+F$``0(&N0```%``_
  2825. XM```@0?D```X"(GD````@80`!!BQY````!"!N`B)A``#:!KD```!0````($'Y,
  2826. XM```.'R)Y````(&$``-XL>0````0@;@(F80``L@:Y````4````"!!^0``#CPBN
  2827. XM>0```"!A``"V+'D````$(&[^.F$``(HL>0````1#^0``"[A.KO[:2H!G%B/\L
  2828. XM```+^@``!S@C_```"_H```=,8!0C_```#!(```<X(_P```P2```'3"!Y````4
  2829. XM'$*`0H$B?```!F0L>0````A.KO\H+'D````$(#P```&0(E].KO\N('D````4F
  2830. XM80``FBQY````""!Y````%$ZN_[A"@$YU+'D````$0_D```Y982Y#^0``#ED@K
  2831. XM>0```"!A"DYU$!@2P&;Z3G4O"@P8``!F^E-()$@@22)*8>8D7TYU2.<P($7Y'
  2832. XM```*CB((=@<D`0*"````#R`"'S(``.B)4<O_[G8'$M]1R__\3-\$#$YU0H`O8
  2833. XM#2IY````(%)`#!T``&;X4T`J7TYU+'D````$+PTJ2"!-(&@`5B\(<@`2*``/<
  2834. XM<`'CH$ZN_L(@7TZN_HPB0"@I`!1.KOZ&N+P```(`9M(J7TYU('D````0(F@`I
  2835. XM,B/)````&'(`$CD````I9QZR/``"9Q@C_```"J````*N(_P```J@```"PF``V
  2836. XM`#`@>0```!A"0$*!(GP```+*+'D````(3J[_*"/\```+=@```JXC_```"W8`0
  2837. XM``+"('D````80D!"@2)\```"HBQY````"$ZN_R@2.0```"FR/```9@A!^0``6
  2838. XM"K]@;K(\``%F"$'Y```*T&!@LCP``F8(0?D```K;8%*R/``#9@A!^0``"OU@W
  2839. XM1+(\``1F"$'Y```+#F`VLCP`!68(0?D```L>8"BR/``&9@A!^0``"RI@&K(\2
  2840. XM``=F"$'Y```+.V`,LCP`"&8L0?D```M6(\@```*&(\@```*:('D````8(GP`-
  2841. XM``)Z0H!"@2QY````"$ZN_RA.=29Y````("A+(CP```/_0H`0&[`\`!]C#K`\[
  2842. XM`']D"!C`4<G_[F`(&/P`+E')_^0@>0```!0CZ``R````''8`)GD````@(@/"3
  2843. XM_``(!H$````4,\$```=:4T$SP0``!VXD?````1(B`\+\`$`@2]'!<#\4V%'(X
  2844. XM__P4O```0H!"@2!Y````'$/Y```'5"QY````"$ZN_RA20[:\````#V.F3G4S!
  2845. XM_``"````)F$.3G4S_``#````)F$"3G4L>0````23R4ZN_MHCP````(Y#^0``:
  2846. XM`'Y.KOZ>0_D````N<``0.0```"M"@4'Y```+O$ZN_D1*@&<.0_D```!^3J[^9
  2847. XMF&```39#^0```"XC>0```"``*"-\````?@`.,WP`#@`<3J[^."PY````3F<,9
  2848. XM$_P`'0```"Q@``"T.CD````FNGP``F8@0_D````N(WD````@`"@C?````'X`N
  2849. XM#C-\``4`'$ZN_CA#^0```"XC?````'X`#C-Y````)@`<(WD````@`"@C?```6
  2850. XM!```)"-\```````L+'D````$3J[^.!/Y````30```"PZ.0```":Z?``#9C!#^
  2851. XM^0```"XC>0```"``*"-\````?@`.,WP`!``<+'D````$3J[^.!/Y````30``Y
  2852. XM`"Q*.0```"QG(D/Y```+WB!Y````%"1\`````"QY````"$ZN_NPL>0````1#5
  2853. XM^0```"XS?``)`!PC?```````)$ZN_CA#^0```'Y.KOZ80_D````N3J[^/DYUA
  2854. XM1$]3``````````-P+'D````$0_H`$$ZN_Z`@0"!H`!9"@$YU9&]S+FQI8G)AK
  2855. XM<GD`0H`@>0```"`B/````/_0F&0"4D!1R?_X<O^2@"1Y````("5!``1.=2QY&
  2856. XM````!$/Y```-O$*`3J[]V"/`````#&8``!8L>0````@@?`````!.KO^@8```+
  2857. XM+BQY````#$'Y```/0B)\`````$7Y```/'$ZN_=XL>0````0B>0````Q.KOYBT
  2858. XM$_P``````"H3_```````)$*`3G6P?`!19@``#$'Y```.=&```(ZP?`!29@``N
  2859. XM#$'Y```.@6```'RP?`!39@``#$'Y```.CF```&JP?`!49@``#$'Y```.FV``W
  2860. XM`%BP?`!59@``#$'Y```.J&```$:P?`!69@``#$'Y```.M6```#2P?`!79@``/
  2861. XM#$'Y```.PF```"*P?`!89@``#$'Y```.SV```!"P?`!99@``&$'Y```.W"((F
  2862. XM0H)"@RQY`````$ZN_R(3_```````*A/\```````D0H!.=3/\`:(```"&,_P`#
  2863. XM@@```(@C_````0@```"<+'D````(('P```""3J[_-"/`````%"!`(&@`,B)\W
  2864. XM```'?$*`0H%.KO\H('D````480#ZCBQY````""!Y````%$ZN_[A"@$YU80#UI
  2865. XMJDJ`9@).=2QY````!"/\_____P````0,;@`D`!1M!$[N_2I+^@`&3J[_XD'Y/
  2866. XM`0```)'H_^P@:``$58A.<$[0+'D````$(GD````$3J[^8B)Y````"$ZN_F(BO
  2867. XM>0````!.KOYB3G4``````^P```"+`````0````@````J````0````&````!Z?
  2868. XM````D@```.X```%:```!U@```@0```(2```"-````YH```.Z```$M@``!+H`4
  2869. XM``3&```$R@``!-8```3:```$Y@``!.H```3V```%#```!4````5N```%Q@``V
  2870. XM!>0```7X```&````!@8```8,```&&```!G@```9\```&@@``!H8```:6```&>
  2871. XMW@``!N8```;L```&\@``!OX```=,```'A```!X@```>.```'D@``!Z@```>LU
  2872. XM```'L@``![8```?(```'S```!](```?6```'X```!^0```?J```'[@``!_X`+
  2873. XM``@N```(-@``"#P```A"```(3@``"(8```B,```(F```")X```BJ```(L```J
  2874. XM"+P```C"```(S@``"-0```C:```)`@``"2H```E2```)>@``"9X```FL```)C
  2875. XML```";8```FZ```)P@``"<8```G,```)T```">````HF```*+@``"F````L``
  2876. XM```+!```"PH```L.```+(@``"S(```LV```+/```"T````M0```+;```"WH`1
  2877. XM``N(```+E@``"Z0```NR```+P```"\X```O<```+X@``"^@```OT```,6@``P
  2878. XM#&(```R.```,[@``#?````Z>```.S@``#MH```\0```/(@``#S0```]&```/F
  2879. XM6```#VH```]\```/C@``#Z````_,```/U```#]H```_>```/Z@``$`````"KP
  2880. XM`````@```!0````T````2@```%H```!P````B@```)X```"H````M@```+X`B
  2881. XM``#&````V````0P```$<```!+@```3@```%4```!:````70```&*```"+```<
  2882. XM`DH```)R```"A@```IH```*N```"P@```M8```+J```"_@```Q(```,F```#=
  2883. XM/````T0```->```#;@```W8```.0```#I````ZX```.T```#S````]8```/V1
  2884. XM```$,```!#8```1"```$2@``!*````3P```$_```!1(```4>```%D```!:@`6
  2885. XM``6Z```%V```!A(```8B```&+```!D0```9.```&7```!FX```:,```&J```"
  2886. XM!KX```;(```&S@``!O@```<(```'$@``!RX```=F```'?```!YH```?T```(5
  2887. XM!```"`X```@8```('@``"$@```A8```(8@``"'X```C@```(_```"0@```DDJ
  2888. XM```),```"4P```E8```)=```"8````G6```)Y@``"@(```H,```*$@``"C0`_
  2889. XM``J0```*X```"NH```KR```+&```"R@```M&```+5@``"V````ON```+_@``I
  2890. XM#`H```PX```,0```#$@```QH```,B```#)0```RL```,N```#,X```S4```,D
  2891. XMW@``#.8```S\```-"@``#1````T8```-*@``#30```T^```-2@``#5````U8-
  2892. XM```-:@``#7````UX```-@```#:(```VF```-K```#;@```V^```-Q@``#=X`O
  2893. XM``WB```-Z```#?8```X"```.$@``#BH```XT```.<@``#HP```ZJ```.M```E
  2894. XM#L@```[J```.]@``#OX```^L```/N```#\````_D```/]```$`X``!`8```0[
  2895. XM'@``$'0``!!^```0B`````(````#```!/@``!S@````````#\@```^H`````M
  2896. X4```#\@```^D````!</].=0```_(#,
  2897. X``
  2898. Xend
  2899. Xsize 10460
  2900. END_OF_FILE
  2901. if test 14686 -ne `wc -c <'bigbrother.uu'`; then
  2902.     echo shar: \"'bigbrother.uu'\" unpacked with wrong size!
  2903. fi
  2904. # end of 'bigbrother.uu'
  2905. fi
  2906. if test -f 'bighelp' -a "${1}" != "-c" ; then 
  2907.   echo shar: Will not clobber existing file \"'bighelp'\"
  2908. else
  2909. echo shar: Extracting \"'bighelp'\" \(787 characters\)
  2910. sed "s/^X//" >'bighelp' <<'END_OF_FILE'
  2911. Xecho "Function key help BigBrother 2.02"
  2912. Xecho "================================="
  2913. Xecho "F2 " NOLINE
  2914. Xif exists s:F2
  2915. Xtype s:F2
  2916. Xelse
  2917. Xecho "not installed*N"
  2918. Xendif
  2919. X
  2920. Xecho "F3 " NOLINE
  2921. Xif exists s:F3
  2922. Xtype s:F3
  2923. Xelse
  2924. Xecho "not installed*N"
  2925. Xendif
  2926. X
  2927. Xecho "F4 " NOLINE
  2928. Xif exists s:F4
  2929. Xtype s:F4
  2930. Xelse
  2931. Xecho "not installed*N"
  2932. Xendif
  2933. X
  2934. Xecho "F5 " NOLINE
  2935. Xif exists s:F5
  2936. Xtype s:F5
  2937. Xelse
  2938. Xecho "not installed*N"
  2939. Xendif
  2940. X
  2941. Xecho "F6 " NOLINE
  2942. Xif exists s:F6
  2943. Xtype s:F6
  2944. Xelse
  2945. Xecho "not installed*N"
  2946. Xendif
  2947. X
  2948. Xecho "F7 " NOLINE
  2949. Xif exists s:F7
  2950. Xtype s:F7
  2951. Xelse
  2952. Xecho "not installed*N"
  2953. Xendif
  2954. X
  2955. Xecho "F8 " NOLINE
  2956. Xif exists s:F8
  2957. Xtype s:F8
  2958. Xelse
  2959. Xecho "not installed*N"
  2960. Xendif
  2961. X
  2962. Xecho "F9 " NOLINE
  2963. Xif exists s:F9
  2964. Xtype s:F9
  2965. Xelse
  2966. Xecho "not installed*N"
  2967. Xendif
  2968. X
  2969. Xecho "F10 " NOLINE
  2970. Xif exists s:F10
  2971. Xtype s:F10
  2972. Xelse
  2973. Xecho "not installed*N"
  2974. Xendif
  2975. X
  2976. END_OF_FILE
  2977. if test 787 -ne `wc -c <'bighelp'`; then
  2978.     echo shar: \"'bighelp'\" unpacked with wrong size!
  2979. fi
  2980. # end of 'bighelp'
  2981. fi
  2982. if test -f 'readme' -a "${1}" != "-c" ; then 
  2983.   echo shar: Will not clobber existing file \"'readme'\"
  2984. else
  2985. echo shar: Extracting \"'readme'\" \(426 characters\)
  2986. sed "s/^X//" >'readme' <<'END_OF_FILE'
  2987. XThis archive should contain:
  2988. X
  2989. X-----rwe- 90-12-01 18:32:05   21    10460 bigbrother
  2990. X-----rwed 90-12-01 18:31:42   84    42429 bigbrother.asm
  2991. X-----rwed 90-12-01 18:38:34   12     6053 bigbrother.doc
  2992. X-----rwed 90-10-21 15:10:20    2      787 bighelp
  2993. X-----rwed 90-10-21 14:20:10    1        6 F2
  2994. X-----rwed 90-10-21 14:20:34    1        5 F3
  2995. X
  2996. Xand of course this readme file.
  2997. X
  2998. XErwin van Breemen
  2999. XThe Orega Programming Group Holland
  3000. X
  3001. END_OF_FILE
  3002. if test 426 -ne `wc -c <'readme'`; then
  3003.     echo shar: \"'readme'\" unpacked with wrong size!
  3004. fi
  3005. # end of 'readme'
  3006. fi
  3007. echo shar: End of archive 1 \(of 1\).
  3008. cp /dev/null ark1isdone
  3009. MISSING=""
  3010. for I in 1 ; do
  3011.     if test ! -f ark${I}isdone ; then
  3012.     MISSING="${MISSING} ${I}"
  3013.     fi
  3014. done
  3015. if test "${MISSING}" = "" ; then
  3016.     echo You have the archive.
  3017.     rm -f ark[1-9]isdone
  3018. else
  3019.     echo You still need to unpack the following archives:
  3020.     echo "        " ${MISSING}
  3021. fi
  3022. ##  End of shell archive.
  3023. exit 0
  3024. -- 
  3025. Mail submissions (sources or binaries) to <amiga@uunet.uu.net>.
  3026. Mail comments to the moderator at <amiga-request@uunet.uu.net>.
  3027. Post requests for sources, and general discussion to comp.sys.amiga.misc.
  3028.